刷新AJAX调用

时间:2015-03-13 10:56:43

标签: ajax

我在cordova应用程序中有一个AJAX调用。我在实际调用之前检查了互联网连接的可用性。但有些时候,移动互联网连接在呼叫发生后几秒内就会丢失,因此设备不会从网络服务中读取任何回复。它转到Ajax调用的错误部分。我想再次进行这个Ajax调用,以便创建DOM

调用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);

        }
    });
}

1 个答案:

答案 0 :(得分:0)

如果你想在错误后重试,你可以递归地重新调用你的函数,或者做这样的事情来防止重复次数过多:

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);
}