2013-07-18 2 views
0

콜백 옵션을 사용하여 성공 블록 외부에서 값을 가져 오는 중입니다 (크로스 도메인 호출). 나는 콜백 함수 안에서 값을 얻고 있지만 외부에서는 그렇지 않다. 다음 코드를 참조하십시오. 또한 값이 콜백 함수 내에서만 사용 가능하다면 성공 블록 외부에서 코드를 작성하는 것과 다른 점이 있습니다.콜백 함수 및 jquery ajax 호출의 전역 변수

var globalVar ; 
     function callbackClick() { 
      var jsonData = { "name": "Alex" }; 
      test("http://mydomain:84/AuthService.svc/TestAsyncGet", jsonData, callback); 
     } 

     var callback = function (data, textStatus, xhr) { 
      globalVar = data; 
      alert(data + "\t" + textStatus); //here I am getting data 
     } 

     var test = function (url, jsonData, cb) { 
      $.support.cors = true; 
      $.ajax({ 
       url: url, 
       type: "GET", 
       data: jsonData, 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       processdata: true, 
       success: cb, 
       error: function error(response) { 
        alert("Network error"); 
       }, 
       complete: function (msg) { 
       } 
      }); 
      alert("GLOBAL " + globalVar); //here i am not getting the value 
     } 

하나 더 : - 심지어 내가 사용하는 콜백 함수를 일부러 경우, 성공 블록 내부의 코드가 왜 내가 값을 받고 있지 않다, $ 아약스 외부 경고 문 앞에 실행하지만?

감사

답변

0

는 XMLHttpRequest가 시작된 후 $ 아약스() 명령이 실행 된 후에 만이 종료하기 전에, 성공 함수가 호출 즉 전에 경고. 따라서 그 당시 globalVar은 여전히 ​​정의되지 않았습니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 그러나 성공 함수가 호출되기 전에 $ .ajax 뒤에 오는 경고가 호출되면, 성공 블록 안의 경고가 먼저 발생하고 왜 그 값을 얻는 지 이유가 있습니다. – Dev