2017-12-19 1 views
0

그래서,이 코드가 있습니다JQuery와 아약스 요청 전역 변수

$.post("contacts.php", 
    {zip: $("#zip").val()}, "json").done(function(data){ 
     var response = JSON.parse(data); 
     $("#city").val(response[0].city); 
     });} 

그것은 서버에 우편 번호를 게시를하고, 서버는 우편 번호에 해당하는 도시 이름을 반환합니다. 이제 문제는 done 함수 밖에서 응답 [0] .city에 액세스하려고합니다. 문제는 글로벌이라고 선언 할 수 없다는 것입니다. 나는 var를 잃어 버리려고 노력했다. 나는 그것이 글로벌이라고 선언했지만, nop은 읽지 않는다. 또한 함수 밖에서 스크립트에서 제일 먼저 선언하려고 시도했지만 여전히 nop이 아닙니다. 액세스 할 수 없습니다. 나는 또한 completly 다른 변수를 global로 정의하려고 시도했다. 그것을 저장하기 위해 response 변수를 전달했다. 아직 안돼.

+0

당신은 할 수 없습니다. 기간. – Soolie

+0

페이지의 숨겨진 입력에이를 할당 할 수 있습니까? – Ctznkane525

답변

1

그때 나는 그냥이 같은 $.ajax하기 전에 변수를 생성, 그래서 async: false과는 동기 할 수 있습니다 대신 $.post$.ajax을 사용 :

var city; 

$.ajax({ 
    type: "POST", 
    url: "contacts.php", 
    data: { zip: $("#zip").val() }, 
    success: function(data) { 
     var response = JSON.parse(data); 
     city = response[0].city; 
    }, 
    // by setting async: false the code after the 
    // $.ajax will not execute until it has completed 
    async: false 
}); 

// some operation with the city variable 
+0

아니, 그것을 시도했다. 도시는 정의되지 않았습니다. 그리고 done 함수가 실행되었음을 알았습니다. 심지어 경고 ("IT WORKS")로 테스트했기 때문에. – Drake

+1

내 편집을보고 $ .ajax로 전환하십시오. – Adosi

+0

좋습니다. 작동합니다. 당신 말이 맞아요. 나머지 코드는 ajax 응답을 고려하지 않고 "계산"됩니다. 이렇게하면 기다릴 수 있습니다. 감사합니다 ^^ – Drake