firefox,jQuery ajax调用两次激活,从不触发成功或错误函数

时间:2010-05-25 22:58:01

标签: asp.net jquery firefox

我正在使用.NET框架开发,使用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中显示为永远不会完全响应,这意味着我看不到响应代码,并且firebug中的加载器gif永远不会消失。

注意:在firebug中,它通常会显示Response Header,但是对于第一次调用,此空间为空白

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” “申请/ x-www-form-urlencoded,multipart / form-data或text / plain”比请求预先通过。如果是这种情况,我的所有电话都会发生这种情况。

谢谢

1 个答案:

答案 0 :(得分:0)

这不是建议的临时解决方案的答案。使呼叫与async:false同步并查看是否有效。

我最近一直在用一个听起来类似的臭虫撕掉我的头发。