2015-03-13 145 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