Firefox, JQuery AJAX вызывает срабатывание дважды и никогда не вызывает функции успеха или ошибок - PullRequest
2 голосов
/ 26 мая 2010

Я занимаюсь разработкой с .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», чем запрос предварительно обработан. Если это так, то это должно произойти со всеми моими звонками.

Спасибо

1 Ответ

0 голосов
/ 26 мая 2010

Это не столько ответ, сколько предлагаемый временный обходной путь. Сделайте вызов синхронным с async:false и посмотрите, сработает ли снова.

Недавно я рвал на себе волосы из-за похожей ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...