2010-08-04 3 views
3

아래 check_membership() 함수를 사용하여 AJAX "데이터"를 반환하고 싶습니다. 그러나 "result"는 반환 된 JSON 객체가 아닌 XHR 객체로 계속 설정됩니다.AJAX 성공 이벤트의 데이터를 외부 함수로 어떻게 반환합니까?

어떻게 수정합니까?

function check_membership() { 

    var result; 

    result = jQuery.ajax({ 
     type: 'POST', 
     url: '/ajax/member', 
     dataType: 'json', 
     async: false, 
     success: function(data) { 
      return data; 
     } 
    }); 

    return result; 

}

감사합니다.

+1

"return data"문이 예상대로 작동하지 않는 것처럼 보입니다. 그래서이 줄을 "result = data"로 바꿨고 이제는 작동합니다. – JMan

답변

2

자바 스크립트가 메인 함수에서 반환하기 전에 발사는 $ 아약스의 성공 콜백 '대기'하지 않을 것이다, 그래서 좋은 기회가 아무것도 반환되지 않을 것입니다. async 옵션을 false (요청 기간 동안 브라우저가 차단됨)으로 설정하여 동기 Jax 호출을 사용하거나 전략을 수정해야합니다 (예 : 궁극적으로 수행하고자하는 일을 수행하여 내에서 성공 콜백. 예를 들어

function update_membership_status() { 
    jQuery.ajax({ 
     type: 'POST', 
     url: '/ajax/member', 
     dataType: 'json', 
     success: function(json) { 
      $("#status").text('Signed In:' + json.SignedIn + " msg" + json.msg); 
     } 
    }); 
} 
다음
+0

아쉽게도 여전히 작동하지 않습니다. 위의 업데이트 된 코드를 살펴 보시겠습니까? "Result"는 여전히 반환 된 JSON 객체가 아니라 XHR 객체로 설정됩니다. – JMan

+0

나는 그것을 이해했다. 위 내 의견을 참조하십시오. 콜백 내에서 데이터를 반환하면 예상대로 작동하지 않는 것처럼 보입니다. – JMan

0

당신은 기적으로 데이터를 반환 할 비동기에게 속성을 사용할 수 있습니다 :

function check_membership() { 
    var result = jQuery.ajax({ 
     type: 'POST', 
     url: '/ajax/member', 
     dataType: 'json', 
     async: false 
    }); 
return result.SignedIn; 
} 
+0

디버깅 목적으로 alert 함수를 거기에 넣습니다. check_membership()에서 AJAX "데이터"를 반환하기 만하면됩니다. – JMan

+0

아, 미안하지만 충분히 명확하지 않았습니다. 업데이트 된 게시물에 다른 해결책을 설명했습니다. 이것을 확인하십시오. –

+0

"async : false"(위의 업데이트 된 코드 참조)와 여전히 동일한 결과를 추가했습니다. – JMan

1
var result = 
{ 
    ajax: function(){ 
     jQuery.ajax({ 
     type: 'POST', 
     url: '/ajax/member', 
     dataType: 'json', 
     async: false, 
     success: function(data) { 
       return data.signedIn; 
     } 
    }); 
    } 
} 

(result.ajax 전화); by wh

관련 문제