2011-01-20 7 views
3

JQuery의 getJSON 함수를 통해 두 번의 AJAX 호출을 수행해야합니다.JQuery getJSon 중첩 호출이 작동하지 않음

문제는 일단 호출 중 하나가 수행되면 두 번째 호출에서 매개 변수로 첫 번째 호출 결과가 필요하므로 즉시 두 번째 getJSON 함수를 호출해야한다는 것입니다.

$.getJSON("/Traslados/ObtenerCedulas", { Param1: $("#Param1").val(), Param2: $("#Param2").val() }, function (j) { 
     $("#Result1").val(j); 
     $.getJSON("/Traslados/ObtenerLogins", { Param3: $("#Param3").val(), Param4: $("#Result1").val() }, 
       function (k) { 
         alert(k); 
         $("#Result2").val(k); 
     }); 
}); 

두 번째 호출이 제대로 수행되고 있으며 예상 된 결과 (나는 방화범의 콘솔을 사용하여이 디버깅) 제공된 경우에도 문제는있다, 그것은 실행되지 않습니다

내 코드는 다음과 같습니다 경고 및 심지어 최악의 경우, k 값을 Result2 입력 필드로 설정하지 않았습니다.

무슨 일입니까?

답변

0

내가 여기서 볼 수있는 한 가지 사실은 첫 번째 호출이 성공했는지 실패했는지 여부에 관계없이 두 번째 getJSON 호출이 발생하고 있으며 # Result1이 실제로 올바르게 설정되었는지 여부를 알 수있는 방법이 없다는 것입니다. 당신이해서 getJSON의 API의 문서를 보면

는 : 는 http://api.jquery.com/jQuery.getJSON/ 이 방법은 몇 가지/실패/응답 handlings 항상 종류를했을 있도록 첫번째해서 getJSON을 구성하는 방법을 보여줍니다.

메모리가 작동하는 경우 이것은 전체적인 문제는 아닙니다. 과거에 아약스 호출을해야 할 때, 나는 과거에 호출을 대기열에 넣고 빼는 데 사용했습니다.

<html> 
<header> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script> 
<script> 
    function fakey_not_ajax(message, callback) { 
    alert (message); 
    callback(); 
    } 
    function queue_my_stuff(kick_it_off_callback) { 
    $(document).queue("mydemo_queue", function(){ 
     fakey_not_ajax("show me first", function() { 
     $(document).dequeue("mydemo_queue"); 
     }); 
    }); 
    $(document).queue("mydemo_queue", function(){ 
     fakey_not_ajax("show me second", function() { 
     $(document).dequeue("mydemo_queue"); 
     }); 
    }); 

    kick_it_off_callback(); 
    } 
    function push_the_button() { 
    alert ("pushed"); 
    queue_my_stuff(
     function(){ 
     $(document).dequeue("mydemo_queue"); 
     } 
    ); 
    } 
</script> 
</header> 
<body> 
Try this 
<a href="#" onclick="push_the_button();">Push Me</a> 
</body> 
</html> 
대기열의 빠른 예
관련 문제