функция toJSON() скрипта scr_JSON, отправка POST запроса на сервер

Использую функцию toJSON для передачи данных в формате JSON. В качестве параметра передаю ей ассоциативный массив(данные):
var AccountToSend = {
"terrasoft_id":ds_Account.Values('ID'),
"countryname":ds_Account.Values('CountryID'),
"email":ds_Account.Values('Communication3')
}

var AccountToSendInJSON = toJSON(AccountToSend);

Работает она корректно, возвращает строку данных. Дальше мне нужно передать эти данные(JSON) на сервер. Создаю объект XMLHttpRequest, посылаю Post запрос на сервер:

var request = getXmlHttp(); // getXmlHttp() - моя функция, создает объект XMLHttpRequest
request.open("POST",URL,false);
request.send(AccountToSendInJSON); // JSON строка
var UploadResponse = request.responseText;

Проблема в том,что сервер не определяет моего JSONа. В чем может быть проблема не знаю, так как с JSONом и объектом XMLHttpRequest работаю впервые.

Нравится

7 комментариев

Антон, строку на сервер нужно отправлять в кодированном виде.
Используйте функции:

var Send = encodeURIComponent(AccountToSendInJSON);

или

var Send = encodeURI(AccountToSendInJSON);

дальше - как у Вас:

request.send(Send); // JSON строка - кодированная

Александр, сделал как вы сказали, результат тот же: {success:"false", error:"No JSON detected"}

Антон, я не знаю, что ждет сервер, возможно надо добавить имя параметра:

var Send = 'nameparam=' + encodeURIComponent(AccountToSendInJSON);

здесь nameparam имя параметра в строке запроса, который ждет сервер.

Посмотрите на http://xmlhttprequest.ru/, там много полезного.

"Каневский Антон Владимирович" написал:request.send(AccountToSendInJSON);

Александр правильно заметил, вам скорее всего надо сформировать не JSON, а строку вида "terrasoft_id=value&countryname=value.."

ну и

"Каневский Антон Владимирович" написал:request.send(AccountToSendInJSON); // JSON строка
var UploadResponse = request.responseText;

надо ж слушателя наверное повесить на onreadystatechange если его нет конечно )

Спасибо за советы, но... сервер ждет именно Json. Та часть массива AccountToSend , которую я привел здесь, это не весь массив, он раза в 4 больше(я сократил его для простоты). Слушателя навешивал, с ним работает также:sad: Кстати, GET-запрос на тот же сервер работает хорошо, получаю данные в Json-формате.Не знаю, в чем еще может быть проблема.Возможно, проблемы с кодировкой?

"Каневский Антон Владимирович" написал:Кстати, GET-запрос на тот же сервер работает хорошо

"Каневский Антон Владимирович" написал:Не знаю, в чем еще может быть проблема.

Может проблема в том, что данные надо отдать методом GET? )

Давайте серверный код, сразу все станет понятно )

Юрий,серверный код мне не доступен.

Показать все комментарии