2014-08-28 67 views
0

我需要執行一個ajax函數,這裏的細節是我想執行此函數,直到另一個ajax函數返回成功爲止。執行ajax函數,直到獲得另一個ajax調用的成功

這是將我不得不等待返回成功信息功能(try..catch塊)

Ajaxfunction1

$.ajax({ 
     type : "GET", 
     url :url, 
     data : parameters, 
     success : function(msg) { 
      try { 
       var jsonObject = JSON.parse(msg); 
       console.debug(msg); 
       //SendToDMS(msg); 
      } catch (e) { 
       $("#SaveConfig").removeAttr("disabled"); 
       toastr.error(msg + '.', "Message"); 
      } 
     }, 
     failure : function(msg) { 
      $("#SaveConfig").removeAttr("disabled"); 
      toastr.error('Error: ' + msg + '.', "Message"); 
     } 
    }); 

我想是這樣的:

while (Ajaxfunction1 != success) { // while the previous ajax function not return success execute this another ajax function 
    $.ajax({ 
      type : "GET", 
      url :url, 
      data : parameters, 
      success : function(msg) { 
       // something on success 
      }, 
      failure : function(msg) { 
       // something when comes an error 
      } 
     }); 
} 

哪有我完成了這個?感謝您的幫助

+1

使它成爲一個功能,並呼籲從第一Ajax調用成功的功能,請使用$。當遞延對象,使用setTimeout函數檢查所設置的第一功能的成功中的標誌。其中任何3個都是可行的,有些比其他人更「乾淨」。 – Ohgodwhy 2014-08-28 20:12:54

+0

你是什麼意思「而ajax函數返回成功」,你只執行一次,它失敗或成功? – adeneo 2014-08-28 20:16:00

+0

我需要多次執行第二次ajax調用,直到第一次獲得成功事件,這就是爲什麼我把時間塊 – martinezjc 2014-08-28 20:17:38

回答

1

您可以使用從$.ajax返回的延期並檢查它的state()以查看它是否已解決,拒絕或掛起,所以類似遞歸函數的這樣的事情應該做你想做的。

var waitFor = $.ajax({ 
    type : "GET", 
    url : url, 
    data : parameters 
}).done(function(msg) { 
    try { 
     var jsonObject = JSON.parse(msg); 
    } catch (e) { 
     $("#SaveConfig").removeAttr("disabled"); 
     toastr.error(msg + '.', "Message"); 
    } 
}).fail(function(msg) { 
    $("#SaveConfig").removeAttr("disabled"); 
    toastr.error('Error: ' + msg + '.', "Message"); 
}); 

(function rec() { 
    $.ajax({ 
     type : "GET", 
     url : url, 
     data : parameters 
    }).always(function() { 

     if (waitFor.state() != 'resolved') rec(); 

    }).done(function(msg) { 
     // something on success 
    }).fail(function(msg) { 
     // something when comes an error 
    }); 
})(); 
+0

謝謝,作品像一個魅力:)! – martinezjc 2014-08-28 20:30:22