2012-09-07 32 views
4

雖然尋找類似於這裏描述的解決方案: How to chain ajax calls using jquery 我正在尋找一個解決方案,使用jQuery的v1.52。鏈接與jQuery的延期對象多個AJAX調用

我有一組ajax請求。但是每個ajax請求只有在完成前一個ajax調用後才能發送。我試圖用jQuery 1.5.2來實現這一點,但只是無法實現。 Here是我從上面提到的例子修改過來的。這是行不通的。任何人都可以幫助我做到這一點?預計產量http://jsfiddle.net/k8aUj/3/

P.S:我不能升級到版本1.5.2之外

+1

http://stackoverflow.com/questions/6538470/jquery-deferred-waiting-for-multiple-ajax-requests-to-finish – Vishal

+2

@Vishal,該答案並不能解決問題以啓動ajax呼叫後前一個的成功。 – fcalderan

+0

啊!沒有看到成功的一部分..忽略了以前的評論,我會嘗試找出一些東西。 – Vishal

回答

4

呦!解決了! http://jsfiddle.net/sandhyasriraj/AaHZv/

var x = null; 
var i = 0; 
x= $.Deferred(); 
var countries=["US","CA","MX","bx","fs","ZX"]; 
function log(msg) { 
    var $out=$("<div />"); 
    $out.html(msg); 
    $("#console").append($out); 
} 


callX = function(j) { 
    return $.ajax({ 
      type: "GET", 
      url: "/echo/json/", 
      data: {country:countries[i]}, 
      dataType: "JSON", 
      success: function(){ 
       log("Successful request for [" + countries[j] + "]"); 
       i++;  
       x.resolve(); 
       xy(); 
       } 
     }); 

} 
x.resolve(); 
xy = function() 
{ 
    debugger; 
    if(i > 5) 
     return; 

    $.when(x).then(function() { 
     x = $.Deferred(); 
     log("Making request for [" + countries[i] + "]"); 
     callX(i); 
    }); 
} 
xy(); 

這是你想要的嗎?