та же беда...
не могу сформировать тело JSON запроса. Вот тело которое посылает броузер {"controller":"cache","action":"get","params":{"ID":["List:"]},"session":"c10397b9cca89880ad6e"} через JS собираю тело: body = { controller: "cache", action: "get", params: { ID: ["List:"]}, session: sesID }; // sesID переменная в которой ID текущей сессии Вот что уходит в консоле FF на мой запрос {"controller":"cache","action":"get","params":{"ID":["List:"]},"session":"c10397b9cca89880ad6e"} но на мой запрос приходит ошибка: error: Object type:"internalException" number: 0 message: "Internal Error" Если посылать запрос без параметров "params":{} то запросы уходя и приходят нормально. Так же пробовал: body = {}; body.controller = "cache"; body.action = "get"; body.params = {}; body.params.ID = []; body.params.ID[0] = "List:"; // тут должно быть много элементов, но пока прорабатываю с одним. body.session = sesID; Тело такое же... {"controller":"cache","action":"get","params":{"ID":["List:"]},"session":"c10397b9cca89880ad6e"} и ответ с ошибкой Подозреваю, что вся беда в формировании массива параметров... Подскажите в чем может быть беда? |
Вы уверены что отправляете json-строку а не объект?
JSON.stringify() используете? |
Spass,
да. перевожу в строку. вот функция отсылки запроса... function sendJSON(){ console.info("Запрос пошел!"); var date = new Date(); var timeTMP = date.getTime(); var url = urlTMP+date.getTime(); // линк запроса var dataJSON = JSON.stringify(body); // {} JSON запроса console.info("Параметры JSON: URL => "+url+" / Объект => "+dataJSON); var xhr = new XMLHttpRequest(); xhr.open("POST", url , true); xhr.setRequestHeader('Accept', 'application/json, text/plain, */*'); xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8'); xhr.send(dataJSON); xhr.onload = function(){ if(xhr.readyState == 4){ console.info("Ответ получен!"); anwJSON = xhr.responseText; anwJSON = JSON.parse(anwJSON); anwJSON = anwJSON.cache; // масив {} из ответа readJSON(); // функция разбора } } } |
единственное в чем вижу разницу между запросом браузера и моим через JS это "Content-Length"
У броузера на 1 больше... почему не знаю. |
вопрос отпал...
я пробел потерял в теле :) |
Все что присылает сервер идет через JSON.parse, все что посылается на сервер идет через JSON.stringify, на сервере соотв json_encode() & json_decode() если php там. Не надо собирать такие тексты вручную. Что касается транспозинга массивов - просто выводите их почаще в консоль, чтобы научится понимать структуру через графическое представление.
|
Часовой пояс GMT +3, время: 17:34. |