2014-05-23 6 views
1

이것은 기본적인 JQuery/Javascript 질문입니다. 어떻게 getJSON 함수에서 데이터를 가져 옵니까?

다음 코드는 함수가 끝날 때까지 훌륭하게 작동합니다. 나는 한 후 - 더 - 기타를 실행해야합니다 여러해서 getJSON을하고 난 내가 할 수있는 경우를 중첩 피하기 위해 싶습니다

//Using the Web API to pull all the information out for the current ORG ID 
$.getJSON('http://localhost:8081/dhis/api/organisationUnits/' + vuCurrentFacilityID + '.json', function (data) { 
    //alert(data.message); 
    console.log(data); 
    vuCurrentFacilityName = data.name; 
    vuParentFacilityID = data.parent.name; 
}); 

alert(vuCurrentFacilityName); //does not work 

잡았다 * 나는 무엇을 놓치고? 이 질문은 매우 similar to the following입니다.

+0

내 문제를 해결 http://stackoverflow.com/questions/6922237/scope-for-getjson-in-jquery?rq=1, 보이지 않는 대신 deferreds getJSON에서 데이터를 가져 오는 것이 좋습니다. 그것을 중첩하는 것은 그 때이다! –

답변

1

$.getJSON()을 호출하면 비동기 컨텍스트에 들어가고 즉시 모든 것이 실행됩니다. 따라서 alert은 서버가 응답하는 전에 이라고합니다.

사용은처럼

var promise = $.getJSON(...); 

promise.done(function() { 
    alert("yeah"); 
}); 
+0

console.log와 그 모든 것을 사용하여 콜백 내에서 경고를 이동시키는 것이 어떨까요? 잠글 때까지 2 초 전에 응답을 제출해야합니다. 나는 그것을 만들지 않았다. : – DutGRIFF

+0

나는'deferreds'가 더 깨끗하다고 ​​생각하고'done' 핸들러를 원하는대로 자주 붙일 수 있습니다. getJSON이 이미 끝났다고해도 더 이상'done' 콜백을 첨부 할 수 있습니다. 약속이 이미 정의 된대로 즉시. – Luke

+0

+1 주목할 가치가있다. 다른 상황에서 매우 도움이 될 수있다. 고맙습니다. http://api.jquery.com/category/deferred-object/ – DutGRIFF

관련 문제