У меня есть XMLHttpRequest, открытый методом POST, по URL, который, я знаю, существует, потому что я только что сделал GET для него.Однако вызов send () на XHR на самом деле не открывает никакого соединения с сервером и не отправляет никаких данных - я проверил это с помощью WireShark.Вместо этого он просто отказывает в запросе, вызывает обработчик события onreadystatechange, устанавливая состояние в 0 (что означает, согласно спецификации, что «флаг ошибки» установлен).
Но ... нет никакого способа длямне проверить, что происходит не так.Я пробовал это в FireBug, и заголовки и тело выглядят хорошо;нет тела ответа или заголовков ответа.Строка в выводе консоли - это POST / url (x), где (x) - красный круг с X в нем.Причина ошибки нигде не видна.Та же самая строка вообще отсутствует в панели NET.Это, вероятно, ключ, но я не знаю, что.
function save_edits(url, txt, cb)
{
var xhr = new XMLHttpRequest();
console.log("'POST' " + url);
xhr.open('POST', url, true);
xhr.onreadystatechange = function(ev)
{
if (xhr.readyState == 4)
{
console.log('post complete status:' + xhr.status);
cb();
}
}
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var text = "&" + edit_what + "=" + escape(txt.replace(/\r/g, '\n'));
try
{
xhr.send(text);
}
catch (e)
{
console.log('send() error: ' + e.toString());
}
Это выводит в консоли FireBug:
- 'POST' http://mydomain.com/srv.json.section-xna.latest
- POST http://mydomain.com/srv.json.section-xna.latest source.js (строка 70)
- статус завершения сообщения: 0
Строка 1) - это мой оператор журнала консоли.
Строка 2) - это запрос POST XHR, красный, с кружком-X, указывающим на сбой.
Строка 3) - оператор журнала консоли из обработчика onreadystatechange.
НетВозникло исключение (я поставил эту проверку только для паранойи) - даже если я сделаю open () синхронным, а не асинхронным.
Опять же, это не проблема на стороне сервера, потому что запрос неЯ даже не могу сделать это на провод, и я не знаю, как понять, почему это так.