AJAX长轮询不起作用

时间:2013-09-17 18:24:50

标签: php mysql ajax polling

我最近将我的XAMPP从1.8.1升级到1.8.3,其中包括将php从5.4升级到5.5,将mySQL从5.5升级到5.6。

升级后,我的ajax轮询脚本无效,我的代码如下:

  //define setInterval in global variable, to be cleared later      

  myInterval = setInterval(function(){ 

     //this alert works
     alert('inside interval');
     $.ajax({
           url: "../php/pollScript.php",
           dataType: "json",
           data: {action: 'get_count' },
           success: function(data){
               //never reaches this function, alert is not seen
               alert('success');
           },
           error: function (xhr, ajaxOptions, thrownError) {
               alert(xhr.status);
               alert(thrownError);
           }
     )};
  }, 2000);

 //use jquery ajax form to submit form that invokes long running php script
 $("form").submit();

 //interval is cleared in success function of ajax form submit

很明显,setInterval函数正在运行,但是ajax函数没有被执行,我确保使用 session_write_close();在长时间运行的脚本中,为了释放会话,在更新之前没有更改任何代码。有什么想法发生了什么?是否需要在 php.ini 中更改配置才能进行轮询?

添加错误处理程序后

UPDATE:我得错误状态为0,无法想到为什么会发生这种情况,因为我没有更改任何代码,我读过这可能是你的ajax请求的结果在完成之前被取消....并且chrome dev工具中的pollingScript.php服务器没有命中 - >网络选项卡

长时间运行的脚本也可以正常运行。

1 个答案:

答案 0 :(得分:0)

我希望我能在评论中清楚地发布这个内容,但现在就可以了。

我强烈建议您使用console.log()代替alert(),因为它更有用,如下所示:

//define setInterval in global variable, to be cleared later      

myInterval = setInterval(function(){ 

 //this alert works
 alert('inside interval');
 $.ajax({
       url: "../php/pollScript.php",
       dataType: "json",
       data: {action: 'get_count' },
       success: function(data){
           //never reaches this function, alert is not seen
           console.log(data);
       },
       error: function (xhr, ajaxOptions, thrownError) {
           console.log(xhr.status);
           console.log(thrownError);
       }
  )};
}, 2000);

//use jquery ajax form to submit form that invokes long running php script
$("form").submit();

//interval is cleared in success function of ajax form submit

此外,无论您使用何种浏览器,都可以成为网络标签的最佳朋友。建议在刷新页面时打开此选项卡。

刷新页面时,在网络标签页中找到pollScript.php,然后点击它即可。

祝你好运!