我正在使用 jQuery Mobile 创建一个 webapp 来查看和更新 CRM 类型系统。
jQuery.get
移动应用程序使用和发送更新,jQuery.post
并且当网络连接可用时它们工作正常。
当网络连接不可用时,我应该如何编码或者我可以使用什么来排队jQuery.get
和jQuery.post
调用,以便在网络连接再次可用时发送它们。
我正在使用 jQuery Mobile 创建一个 webapp 来查看和更新 CRM 类型系统。
jQuery.get
移动应用程序使用和发送更新,jQuery.post
并且当网络连接可用时它们工作正常。
当网络连接不可用时,我应该如何编码或者我可以使用什么来排队jQuery.get
和jQuery.post
调用,以便在网络连接再次可用时发送它们。
编辑:啊便便,我刚刚注意到你说'jQuery Mobile',我最初将它读作jquery for mobile lol。嗯,这可能只适用于 jQM 支持与普通 jquery 相同的 ajax
我对辅助 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;
}
}
}
});