2014-04-23 2 views
0

메신저를 정렬하려고합니다. get 형식의 Ajax 요청을 만들고, 페이지가 많은 응답을 반환합니다. 확인 중 하나는 페이지 반환 OK입니다. 양식을 제출하기 위해 진행, 그렇지 않으면 양식 제출을 중단해야하지만, 함수의 측면 밖에서 데이터에 액세스 할 수 없다면, 혼자서 가을 기능 안에서 사용할 수 있습니다. 비동기식 매너니즘 때문입니까?, 어떤 사람이 나를 도와 줄 수 있습니까? 이걸 벗어나고 싶니?

$.get('ajax.html',function(data){ 
//some code here 
}); 

if(data == 'ok'){return true; } else {return false;} 
+1

http://tackoverflow.com/questions/133310/how-can-i-get-jquery-to-perform-a-synchronous-rather-than-asynchronous-ajax-re#answer-2592780 –

+0

가능한 복제본 [AJAX 호출에서 응답을 반환하는 방법?] (http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – Quentin

답변

0

$.get는 비동기 요청을 발사하고 프로그램의 실행이 계속됩니다. 따라서 귀하의 경우 data은 ajax 호출이 완료되고 콜백 함수 내부에서만 사용할 수 있습니다. 콜백 함수 안에서 data으로 무엇을하고 싶든해야합니다. 사용할 수있는 변수가없는

$.get('ajax.html', function (data) { 
    if(data === 'OK') { 
     // do what you need to do in this case 
    } 
}); 

// at this point there's no data 
+0

폴백 내부에서 반환 if 양식 제출을 유지하는 데 도움이되지 않습니다. –

+0

생각하고있는대로 할 수는 없습니다. 내부적으로 $ .get 함수를 호출 한 함수에서 반환 된 함수는 사용할 수 없으며 비동기 호출의 특성입니다. 당신이하고 싶은 것은 폼이 자동으로 제출되지 못하게하고 콜백 내부에서 수동으로 submit하는 것을 막는 것입니다. – Jaime

-1

아니, 당신은 액세스하는 데이터 :

당신이 뭔가를 할 수있는 재 배열하면 코드에 필요합니다. 다른 변수에 할당하는 것은 어떻습니까?

var resp = ""; 
get('ajax.html', function (data) { 
    resp = data; 
}); 

if(resp == "OK") {alert(1);} 

또는 당신

$.ajax({ 
    url: url, 
    type: "GET", 
    async: false, 
    data: data, 
    success: function(ret) { 
     //alert(ret); 
     resp = data; 
    } 
}); 
alert(resp); 

거짓 건배 asyn 사용을 갈 수 있습니다!

+0

당신은 실제로 아약스 외부의 데이터에 접근 할 수 없습니다. 데이터에 액세스하려면 ajax 호출 외부 변수에 데이터를 지정해야합니다. 투표 해 주셔서 감사합니다. –

관련 문제