2015-03-13 148 views
0

我在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); 

     } 
    }); 
} 

回答

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

我也考虑过这个选项,但是这可能会导致无限循环在某些情况下 – 2015-03-13 12:07:05

+0

@MiteshBaviskar它不会导致一个无限循环。它将在10次重试后停止。 – JLRishe 2015-03-13 12:08:43