2012-09-07 2 views
4

여기에 설명 된 것과 비슷한 해결책을 찾고있는 중에 : How to chain ajax calls using jquery jquery v1.52를 사용하는 솔루션을 찾고 있습니다.jquery 지연된 객체를 사용하여 여러 아약스 호출 연결하기

나는 일련의 아약스 요청을해야한다. 그러나 각 아약스 요청은 이전 아약스 호출을 완료 한 후에 만 ​​전송됩니다. 나는 jquery 1.5.2로 이것을 달성하려고 노력하고 있지만 할 수 없다. Here은 위에서 언급 한 예제에서 수정 한 것입니다. 작동하지 않습니다. 아무도 내가이 일을하도록 도울 수 있습니까? 예상 출력은 http://jsfiddle.net/k8aUj/3/

P.S이다 : 나는 1.5.2

+1

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

+2

@Vishal, 그 대답은 아약스 호출을 시작하기 위해 문제를 해결하지 못합니다. 이전의 성공. – 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(); 

원하는 내용은 무엇입니까?