jQuery.get将请求排队,直到网络连接可用

时间:2011-09-01 12:00:57

标签: javascript jquery jquery-mobile offline-mode

我正在使用jQuery Mobile创建一个webapp来查看和更新​​CRM类型系统。

移动应用使用jQuery.getjQuery.post发送更新,当网络连接可用时,它们可以正常工作。

当网络连接不可用时,我应该如何编码或用什么来排队jQuery.getjQuery.post来电,以便在它再次可用时发送。

1 个答案:

答案 0 :(得分:1)

编辑:啊poo,我只是注意到你说'jQuery Mobile',我最初读到的是jquery for mobile lol。嗯,只要jQM支持ajax和普通的jquery一样,这可能只会起作用

我有一个关于辅助ajax请求的想法,但你不应该那样做。只需像这样设置你的AJAX,并给它一个超时。如果需要> 4(应该足够宽带连接,但有些手机可能需要~10-15秒)服务器才能响应,它只会再次尝试ajax请求到retryLimit,可以设置,然后再更改在50次之后(即,当程序空闲并且可能没有数据时,它应该发送吗?)。当它连接时,它将转到成功函数,然后将数据发送到服务器。

所以它就像:

  $.ajax({
    type: 'GET',
    timeout: 4000,
    tryCount : 0,
    retryLimit: 50,
    success:function(data) {
            sendSavedData();
    }
    error: function(xhr, textStatus, errorThrown) {
      if(textStatus == 'timeout') {
          this.tryCount++;
          if(this.tryCount <= this.retryLimit) {
            $.ajax(this);
            return;
          }
          var check = confirm('We have tried ' + this.retryLimit + ' times to do this and the server has not responded. Do you want to try again?');
          if(check) {
            this.timeout = 200000;
            $.ajax(this);
            return;
          } else {
            return;
          }
      }
    }
  });