互联网断开后,Ajax轮询停止投票

时间:2014-02-21 10:09:03

标签: javascript jquery ajax hibernate sleep

我有一种ajax轮询周期 - 拉取消息,处理消息,等待,再次拉动...... - 一切正常,直到用户断开互联网连接(它甚至可以是如此简单的用户操作,如睡眠/休眠PC )。在此之后 - 至少在最新的Chrome中 - POST失败(逻辑上) - 但在重新连接到互联网之后,轮询周期不会再次开始(即使会话仍处于开启状态)。

jQuery(function(){
// ba polling main
    function pollingMain() {
          $.ajax({
              type: "POST",
              url: ba_home_url+"/pollingscript.php",
              data: { 
                "load": "something",
                "data-one": 0,
                "data-two": 0
              },
              dataType: "json",
              timeout: 60000, 
              success: function(data) {
                  if( data.status == 'nodata' ){ 
                    setTimeout(pollingMain,10000);
                  } else{ 
                    if( data.status == 'okdata' ){
                      console.log('Ok data recived');
                      setTimeout(pollingMain,10000); 
                    } else{
                      //server responded with something we dont know what is
                      setTimeout(pollingMain,10000); 
                    }
                  }

              },
              error: function(request, status, err) {
                  if(status == "timeout") {
                      setTimeout(pollingMain,10000);
                  }
              }
          });
    }
    pollingMain();

});

这是我的代码。我想我在错误回调中缺少一些东西 - 但是我应该在那里添加什么错误状态处理?

1 个答案:

答案 0 :(得分:1)

您正在检查特定状态"超时"。添加else语句以处理其他状态。