Я использую jQuery (1.4.2) с бэкэндом Django и делаю свою разработку с Firefox (3.5.15) на Debian. Я использую $ .ajax () для публикации некоторых данных на моем сервере, которые отражают данные обратно в браузер. Firefox отправляет POST, а затем немедленно выполняет GET для того же URL. Откуда этот GET? Я не хочу, чтобы это случилось.
Код, который я использую для POST, выглядит следующим образом:
$.ajax({
type: 'POST',
url: '/edit_value/',
data: JSON.stringify(data_to_post),
success: function(updated) {
alert('success');
},
error: function(request, description, exception) {
alert('error');
},
async: false,
dataType: 'json'
});
Я вижу сообщение об успехе, а не сообщение об ошибке. Просматривая логи моего сервера, я правильно возвращаю data_to_post.
Я смотрел tcpdump и вижу запрос POST. Выглядит именно так, как я и ожидал:
POST /edit_value/ HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.15) Gecko/20101028 Iceweasel/3.5.15 (like Firefox/3.5.15)
Accept: application/json, text/javascript, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://localhost:8000/
Content-Length: 30
Cookie: csrftoken=9e3edd79a51956f088f4a505ca1b4282; sessionid=80d72430f4682632ccfb8dc8047b7d17
Pragma: no-cache
Cache-Control: no-cache
[{"id":"161","value":"988.0"}]
Ответ тоже выглядит нормально:
HTTP/1.0 200 OK
Date: Mon, 22 Nov 2010 07:28:44 GMT
Server: WSGIServer/0.1 Python/2.6.6
Vary: Cookie
Content-Type: text/json
[{"id":"161","value":"988.0"}]
Если для async установлено значение true, иногда браузер прерывает TCP-соединение раньше, иногда запрос / ответ завершается. Если для параметра async установлено значение false, запрос / ответ всегда завершается (для приведенного выше примера было установлено значение false). Firefox немедленно отправляет GET.
GET /edit_value/ HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.15) Gecko/20101028 Iceweasel/3.5.15 (like Firefox/3.5.15)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost:8000/
Cookie: csrftoken=9e3edd79a51956f088f4a505ca1b4282; sessionid=80d72430f4682632ccfb8dc8047b7d17
Откуда этот GET? Как я могу перехватить его в Firebug до перезагрузки страницы? Какую другую информацию я могу предоставить?
Спасибо,
Craig