2014-07-24 7 views
0

JavaScript/jQuery에서 전역 변수 정의 및 나중에 스크립트에서 가져 오기.jQuery/javascript에 전역 변수 정의

그러나 이상하게 작동하지 않습니다.

콘솔에 getResult을 입력하면 undefined이 표시됩니다.

그러나 할당 된 값 바로 뒤에 getResult을 인쇄하려고하면 정확한 값을 제공합니다.

실제로 아약스 결과가 바닥에 .. 어떻게해야합니까?

var getResult; 
$.getJSON(url, function(data) { 
    //JS statement to Ajax 
    //JS statement to Ajax 
    $.ajax({ 
     type: "post", 
     dataType: "json", 
     url: urlTo, 
     data: dataSend, 
     success: function (result, status) { 
       getResult = result; 
       console.log(getResult); // getResult is working here 
     } 
    }); 

    //JS statement to Ajax 
    //JS statement to Ajax 
    $.ajax({ 
     type: "post", 
     dataType: "json", 
     url: urlTo2, 
     data: dataSend2, 
     success: function (result2, status) { 

     } 
    }); 

    console.log(getResult); // getResult is not working here. Giving " undefined" result here. 
}); 
+0

괜찮습니다. 내가 뭘하는지 이해 .. 하단에 아약스 결과가 필요해 .. 어떻게 이걸 할 수 있을까 ..? –

답변

4

자바 스크립트동기입니다. AJAX비동기입니다. 다음 AJAX 실행하기 전에

따라서, 하단의 console.log(getResult);이 발사됩니다 : 당신은 기본값을 getResult주고 스스로를 테스트 할 수 있습니다

success: function (result, status) { 
    getResult = result; 
    console.log(getResult); // getResult is working here 
} 

.

+0

나는 당신이 가이드로서 잘 작동하는지 테스트했다. 나의 코멘트를 보아라. –

+0

정확하게 "* 아약스 결과가 필요하다"*라는 말은 정확히 무엇을 의미합니까? 2 차 AJAX 성공 함수에서 원하십니까? 두 AJAX 호출이 완료된 후에 뭔가를하려고합니까? 뭐? –

+0

실제로 변수에 아약스 결과를 저장하고 다른 용도로 사용하고 싶습니다.이 아약스 결과를 Underscore.js를 사용하여 템플릿으로 전달하고 싶습니다. –

4

getResult은 AJAX 호출이 완료 될 때까지 정의되어 있지 않으므로 으로 선언되어 있기 때문입니다. AJAX는 비동기이기 때문에

, 첫 번째 콘솔 로그는 같다 :

var getResult; 
console.log(getResult); 

당신이 나에게 여기 getResult의 값을 줄 수 있습니까? 이 정의되지 않기 때문에 아니, 두 번째 AJAX 호출에

+0

괜찮습니다. 내가 뭘하는지 이해 .. 하단에 아약스 결과가 필요해 .. 어떻게 이걸 할 수 있을까 ..? –

+0

함수를 사용하여 값으로 무언가를 할 수 있습니다. http://jsfiddle.net/3Fe8Q/3/ –

1

, 당신은 "undefined" 값을 일으키는 getResult = result2;을 할당하지 않았다 (물론 실제로 그 값은 undefined입니다).

var = getResult;getJSON 함수 안에 넣으십시오.