刷新AJAX呼叫
问题描述:
我在Cordova应用程序中有一个AJAX调用。我在实际调用之前检查了互联网连接的可用性。但有时在移动互联网连接中会在通话完成后丢失几秒钟,因此设备不会从网络服务读取任何答复。它转到Ajax调用的错误部分。我想再次使这个Ajax调用,使DOM应该得到创建刷新AJAX呼叫
调用AJAX功能
function callAjax(type, mainurl, dataType, data, successFunction, errorFunction){
if(isOnline == false)
{
alert('Internet is not running. Please reconnect and try');
return 0;
}
$.ajax({
crossDomain: true,
async:false,
type: type,
url: mainurl,
dataType: "json",
data: data,
beforeSend:function(jqXHR,settings){
jqXHR.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
},
success: function(data) {
successFunction(data);
},
error: function(response) {
// alert(JSON.stringify(response));
errorFunction(response);
}
});
}
答
如果你想要一个错误后重试,你可以再打电话给你的函数递归,或做这样的事情,以防止过多的重试次数:
function callAjax(type, mainurl, dataType, data, successFunction, errorFunction){
if (isOnline == false) {
alert('Internet is not running. Please reconnect and try');
return 0;
}
function tryAjax(retryCount) {
$.ajax({
crossDomain: true,
async:false,
type: type,
url: mainurl,
dataType: "json",
data: data,
beforeSend:function(jqXHR,settings){
jqXHR.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
},
success: function(data) {
successFunction(data);
},
error: function(response) {
if (retryCount > 10) {
errorFunction(response);
} else {
tryAjax(retryCount + 1);
}
}
});
}
tryAjax(0);
}
我也考虑过这个选项,但是这可能会导致无限循环在某些情况下 – 2015-03-13 12:07:05
@MiteshBaviskar它不会导致一个无限循环。它将在10次重试后停止。 – JLRishe 2015-03-13 12:08:43