2013-06-20 4 views
1

동적으로 ajax 요청을 작성하는 경우 성공 콜백을 비동기 적으로 실행하기 때문에 각 콜백에서 어떤 요청이 응답되는지 어떻게 알 수 있습니까?다중 jQuery ajax 호출; 어떻게 콜백을 요청에 연결할 수 있습니까?

예 :

I는 n 개의 질문의 배열을 가지고 있고, 서버는 답변 다시 제공 :

var questions = Array("What's your name?", "What's your mom's name?", "What's your pet's name?"); 
for (var i=0; i<questions.length; i++) { 
      $.get ("server.php", { "Question" : questions[i] }, 
        function(data) { 
         /* I want to process answer, but at this time I cannot access the value of i, 
          so what's question is being answered ? */ 
        }, "json"); 
} 

답변

1

다음과보십시오 : 당신은에

$.get("server.php", { "Question" : questions[i] }, 
    function(data) { 
     alert("success. The next question is being answered: "+questions[i]); 
    }, "json") 
    .done(function() { alert("second succes. This question has been answered:" + questions[i]); }) 
    .fail(function() { alert("Error answering this question: " +questions[i]); }) 

보낼 수 있습니다 어떤 질문에 대한 답변이 나오는지, 그래서 당신은 그 정보를 데이터 변수에 가지고 있습니다.

작동 시험 :가 실행되는 시점에, 나는의 값이 변경 때문에,이 솔루션은 작동하지 않습니다

var questions = Array("What's your name?", "What's your mom's name?", "What's your pet's name?"); 
for (var i=0; i<questions.length; i++) { 
    sendGet(questions[i]); 
} 

function sendGet(question) { 
    $.get("server.php", { "Question" : question }, 
    function(data) { 
     alert("success. The next question is being answered: "+question); 
    }, "json") 
    .done(function() { alert("second succes. This question has been answered:" + question); }) 
    .fail(function() { alert("Error answering this question: " +question); }) 
} 
+0

되는 .done 및 .fail 콜백 성공과 같은 문제를 고통 . – Flatline1963

+0

불행히도 저는 서버의 동작을 바꿀 수 없으므로 질문을 저에게 다시 보낼 수 없습니다. – Flatline1963

+0

@ Flatline1963 다른 posibility를 추가하는 게시물을 에디팅했습니다. 작동하는지 확인하십시오 :) – maqjav

관련 문제