2016-07-30 4 views
0

아래와 같은 코드가 있습니다.jquery에 전역 변수를 사용하는 방법은 무엇입니까?

var globalVar = '' 
$.get("some.php", function(data, status) 
{ 
    alert(data) 
    globalVar = data 
}); 
alert(globalVar) 

첫 번째 경고에는 데이터 값이 표시되지만 두 번째 경고에는 표시되지 않습니다. globalVar가 get 함수 내에서 적절하게 할당되지 않은 것처럼 보입니다. 여기서 전역 변수를 사용하는 올바른 방법은 무엇입니까?

+9

이 "아약스"의 비동기 측면 대신 변수 범위와 관련이 있습니다. get이 끝나기 전에 두 번째 경고가 호출 될 가능성이 큽니다. – Devon

+0

네, 맞습니다. :) – pythonic

답변

3

이 당신의 마지막 alert()는 전에 get() 함수가 완료되지 않는다는 것입니다이 경우에는 더 좋은 방법을 업데이트 시도 할 수 있습니다 호출되고있다. 이러한 문제가 발생하지 않도록하려면 파일을받은 후 마지막으로 alert()을 콜백에 넣을 수 있습니다.

그래서 그 대신이 시도 :

var globalVar = '' 
$.get("some.php", function(data, status) 
{ 
    alert(data) 
    globalVar = data 
}).done(function() { 
    alert(globalVar) 
}); 
2

이이

var globalVar = false; 

jQuery.ajax({ 
    type: "GET", 
    url: 'some.php', 
    success: function (data) { 
    globalVar = true; 
    }, 
    async: false // <- this turns it into synchronous 
});​ 

alert(globalVar); 

아마 어떻게됩니까

var globalVar = false; 

function getData(callback) { 
    $.ajax({ 
     url: 'jsOnChange.php', 
     type: 'GET', 
     success: callback 
    }) 
} 
getData(function(response) { 
    globalVar = true; 
    console.log(globalVar); 
}); 
+0

동기식 AJAX 요청은 제안 할 최악의 아이디어입니다. – Xufox

+0

더 좋은 아이디어가 있으면 알려주고 배우십시오. xD 내 대답 xD를 투표 한 후 감사합니다 –

+1

위의 중복 대상을 참조하십시오. – Xufox

관련 문제