Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery ajax调用响应永远不会返回_Jquery_Ajax - Fatal编程技术网

jquery ajax调用响应永远不会返回

jquery ajax调用响应永远不会返回,jquery,ajax,Jquery,Ajax,我正在开发一个应用程序,它正在进行ajax调用,有时我会遇到一些非常奇怪的行为,当一个ajax调用被触发时,它会复制自己,第二个调用完成,但我没有得到响应,原始调用会一直加载。当再次触发ajax调用或当我点击刷新时,这是固定的 问题是我无法重现这种行为,因为它是随机发生的。大多数情况下,选项卡处于打开状态,而我处于不同的选项卡或程序上 我在使用firebug时注意到的唯一一点是,响应头似乎有问题 与成功的通话相比,他们的顺序不同,一些信息完全缺失。内容类型的类型总是多于我在$.ajaxSetup

我正在开发一个应用程序,它正在进行ajax调用,有时我会遇到一些非常奇怪的行为,当一个ajax调用被触发时,它会复制自己,第二个调用完成,但我没有得到响应,原始调用会一直加载。当再次触发ajax调用或当我点击刷新时,这是固定的

问题是我无法重现这种行为,因为它是随机发生的。大多数情况下,选项卡处于打开状态,而我处于不同的选项卡或程序上

我在使用firebug时注意到的唯一一点是,响应头似乎有问题

与成功的通话相比,他们的顺序不同,一些信息完全缺失。
内容类型
的类型总是多于我在
$.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的截图:


就像原始请求从未完成,但我得到的却是一个从未真正请求过的响应