jquery ajax调用响应永远不会返回
我正在开发一个应用程序,它正在进行ajax调用,有时我会遇到一些非常奇怪的行为,当一个ajax调用被触发时,它会复制自己,第二个调用完成,但我没有得到响应,原始调用会一直加载。当再次触发ajax调用或当我点击刷新时,这是固定的 问题是我无法重现这种行为,因为它是随机发生的。大多数情况下,选项卡处于打开状态,而我处于不同的选项卡或程序上 我在使用firebug时注意到的唯一一点是,响应头似乎有问题 与成功的通话相比,他们的顺序不同,一些信息完全缺失。jquery ajax调用响应永远不会返回,jquery,ajax,Jquery,Ajax,我正在开发一个应用程序,它正在进行ajax调用,有时我会遇到一些非常奇怪的行为,当一个ajax调用被触发时,它会复制自己,第二个调用完成,但我没有得到响应,原始调用会一直加载。当再次触发ajax调用或当我点击刷新时,这是固定的 问题是我无法重现这种行为,因为它是随机发生的。大多数情况下,选项卡处于打开状态,而我处于不同的选项卡或程序上 我在使用firebug时注意到的唯一一点是,响应头似乎有问题 与成功的通话相比,他们的顺序不同,一些信息完全缺失。内容类型的类型总是多于我在$.ajaxSetup
内容类型
的类型总是多于我在$.ajaxSetup
中定义的文本/html
$.ajaxSetup({
dataType:'html',
cache:false,
type:'POST',
timeout:15000,
error:function() {
alert('Action aborted please try again');
},
complete:function(XMLHttpRequest,textStatus){
//console.log('XMLHttpRequest.readyState : '+XMLHttpRequest.readyState+'\nXMLHttpRequest.statusText : '+XMLHttpRequest.statusText+'\nXMLHttpRequest.status : '+XMLHttpRequest.status+'\ntextStatus : '+textStatus);
}
});
还有一个我的ajax调用示例:
var dataString = 'value='+value+'&value1='+value1+'&value2='+value2;
$.ajax({
url:'file.php',
data:dataString,
success:function(resp){
alert(resp);
}
})
在我添加数据类型之前,这种行为发生得更频繁,在使用xampp的winXP SP3机器上本地查看时,这种情况也更频繁,我认为firefox和IE都是如此
我已经在一台运行WindowsServer2008和apache及php标准的服务器上进行了测试,而不是在xampp上进行测试,现在的情况甚至更少。
从我的家用电脑来看,几乎从未发生过上述测试是在我的办公室电脑上进行的
有没有人遇到过类似的行为,或者有没有一种方法可以对我的ajax调用进行不同的编码
我希望避免使用插件,apache服务器上的长轮询似乎有点沉重。使用jquery ajax调用的方式在技术上是正确的。我的一个建议是,不要像以前那样手动构建数据字符串。您可以将对象文本传递给数据参数,并让jquery为您进行字符串转换。这还有一个额外的好处,就是让jquery执行适当的转义,这有时会弄乱XMLHttpRequest
除此之外,我建议您使用firebug的console.trace()命令来查看您是否实际进行了两次.ajax调用以及原因。您可以在ajaxSetup中设置一个“beforeSend”侦听器,这可能是放置它的好地方。您的意思是:
var dataString= {
value: value,
value1: value1
};
我几乎可以肯定的是,一次只能触发一个调用,但如果调用时间太长,它会复制自身并继续加载
我附上firebug的截图:
就像原始请求从未完成,但我得到的却是一个从未真正请求过的响应