функция 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 работаю впервые.
Нравится
Антон, строку на сервер нужно отправлять в кодированном виде.
Используйте функции:
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? )
Давайте серверный код, сразу все станет понятно )