2010-08-16 4 views
0

결과에 ajaxResult를 할당 할 수없는 이유는 무엇입니까? console.log (결과); 성공 옵션 안에있는 제대로 작동하고 콘솔에 두 번째로 나타납니다. 하지만 console.log (결과)의 마지막 결과; 정의되지 않았으며 콘솔에 처음 나타납니다. 이게 뭐가 잘못 되었 니?jQuery 변수 범위?

$(function() { 
     var result; 
     $.ajax({ 
      type: 'POST', 
      url: 'GelinlikSet', 
      dataType: 'json', 
      success: function (ajaxResult) { 
       result = ajaxResult; 
       console.log(result); 
      } 
     }); 
     console.log(result); 
    }); 

답변

1

ajax가 호출되기 전에 console.log가 실행되고 있습니다.

console.log는 ajax를 로깅해야하는 곳입니다.

+0

해결책은 무엇입니까? – beratuslu

+0

그냥 마지막 console.log를 제거합니다. 거기에 정의 된 결과가 아닙니다. –

2

resultsuccess 콜백 실행 후 ajaxResult로 설정해야합니다.

AJAX 콜백은 현재 스레드가 완료 될 때까지 (즉, $.ajaxconsole.log을 호출하는 스레드) 다시 돌아올 수 없습니다.

결과와 함께 몇 가지 작업을 수행해야하는 경우 success 콜백에서 수행해야합니다.

0

두 번째 console.log는 Ajax 호출 직후, 즉 비동기 (Ajax의 A)이기 때문에 success 함수가 호출되기 전에 실행됩니다.