Я занимаюсь разработкой с .NET Framework, используя клиентскую часть jQuery 1.4.2.
При разработке в Firefox версии 3.6 каждый раз один из множества вызовов ajax, которые я делаю на странице, срабатывает дважды, второй возвращается успешно, но не запускает обработчик успеха вызова ajax, а первый никогда не возвращается что-нибудь. Таким образом, в основном все данные отправляются на сервер, а ответ отправляется вниз, но с ответом ничего не происходит.
Вот пример звонка, который я делаю. Это происходит с любым из вызовов ajax, поэтому нет ни одной конкретной причины, вызывающей проблему:
$.ajax({
type:"POST",
contentType : "application/json; charset=utf-8",
data:"{}",
dataType:"json",
success:function(){
alert('success');
},
error:function(){
alert('error');
},
url:'/services.aspx/somemethod'
});
})
Из firebug приведены заголовки первого вызова, который в firebug показывает, что он никогда не отвечает полностью, что означает, что я не вижу кода ответа и gif загрузчика в firebug никогда не исчезает.
Примечание: в firebug обычно указывается заголовок ответа, но для первого звонка это место пусто
Server ASP.NET Development Server/9.0.0.0
X-AspNet-Version 2.0.50727
Content-Type application/json; charset=utf-8
Connection Close
Заголовки запроса
Host mydomain.com
User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3)
Gecko/20100401Firefox/3.6.3 ( .NET CLR 3.5.30729)
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 115
Connection keep-alive
Content-Type application/json; charset=utf-8
X-Requested-With XMLHttpRequest
Referer http://mydomain.com/mypage.aspx
Вот заголовок из второго запроса, который, по-видимому, завершается в firebug (т.е. ответ равен 200):
Заголовок ответа
Server ASP.NET Development Server/9.0.0.0
X-AspNet-Version 2.0.50727
Content-Type application/json; charset=utf-8
Connection Close
Заголовки запроса
Host mydomain.com
User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3)
Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)
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 115
Connection keep-alive
Content-Type application/json; charset=utf-8
Referer http://mydomain.com/mypage.aspx
Подводя итог моему вопросу, почему делаются два запроса и почему ни один из них не вызывает обработчик успеха или ошибки в вызове ajax.
Я видел эту статью о Firefox 3.5+ и предварительных запросах
https://developer.mozilla.org/En/HTTP_access_control#Preflighted_requests
В статье говорится, что "POST" сделан с любым другим типом контента, кроме
«application / x-www-form-urlencoded, multipart / form-data или text / plain», чем запрос предварительно обработан. Если это так, то это должно произойти со всеми моими звонками.
Спасибо