首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jquery php长轮询请求问题

jquery php长轮询请求问题
EN

Stack Overflow用户
提问于 2012-01-13 18:49:02
回答 1查看 1.2K关注 0票数 0

我正在与PHP和jQuery进行基于长轮询(类似于this )的聊天。在浏览器中下载完整个页面后,一个函数向后端发出一个有一定超时限制的长轮询请求,当数据从后端传来时,它再次发出长轮询请求,如果有错误,它将再次发出新的长轮询请求。

问题:通过firebug分析跟踪,我注意到有些时候长轮询请求运行了3到4次,但它不应该运行。每个页面应该只运行一个长轮询请求。

然而,代码可以完美地工作。但长轮询请求重复是问题所在。

代码语言:javascript
运行
复制
function listen_for_message(){ 
// this functions is makes the long-polling request
$.ajax({
  url: "listen.php",
  timeout:5000,
  success: function(data) {
            $('#display').html(data);
            listen_for_message();
             }
  error: function() {
            setTimeOut("listen_for_message()",2000); // if error then call the function after 2 sec
  }
    });
    return;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-13 19:04:51

尝试terminate requests manualy

代码语言:javascript
运行
复制
var connection;
function longpoll() {
   if(connection != undefined) {
      connection.abort();
   }

   connection = $.ajax({ 
       ...
       complete: function() {
          longpool();
       }
   });
}

这也可能是Firefox/firebug的问题(显示正在运行的连接中止),在Chrome中测试它。

更新:

“仅在Firefox中,脚本和3.0+请求不能通过超时取消;即使脚本在超时后到达,它也会运行。”http://api.jquery.com/jQuery.ajax/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8849369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档