2010-06-02 7 views
0

:해서 getJSON 및 변수 범위 자바 스크립트의 기능은 우리의 백엔드 PHP 코드로 우리는이 같은는 ActionProxy이라는 것을 구현했습니다 호출을하기 위해

function ActionProxy(action, input, callback){ 
    $.post("ActionProxy.php?method="+action, 
     { data: input}, 
      function(data, textStatus, XMLHttpRequest){ 
         //return data.ResponseWhatever 
         } 
}); 

우리가 겪고있는 문제는 데이터를 사용한다는 것입니다을 는 ActionProxy 외부 return data.ResponseWhatever

꽤 무의미하다
var res = data.ResponseWhatever
또는
설정 때문에 변수 범위 제한 (우리가 가정)으로 불가능하다. actionproxy를 호출하는 함수가 응답 값에 액세스 할 수 있도록 이러한 응답을 가장 적절하게 처리하는 방법은 무엇입니까?

답변

1

window.ResponseWhatever = data.ResponseWhatever을 사용할 수 있지만 이는 가장 현명한 방법이 아닙니다.

function ActionProxy(action, input, callback){ 
    $.post("ActionProxy.php?method="+action, {data:input}, 
     function(data, textStatus, xhr){callback(data);}); 
} 

참고 : 당신이 원하는 것은 이런 일을하는 것입니다 나는 더 jQuery를-전문가는 아니지만, 내가 잘못 jQuery를-부품의 일부를 찍었을 수도 있지만 요점은 통화 할 곳이다 return data 대신 callback(data);으로 전화하십시오.

+0

우리는 실제로 그것도 생각했지만 콜백을 원할 때가 아니라 반환 값을 받기를 원할 때가 있습니다. 이 모든 것이 가능한가, 아니면 이것을 "쓰기로되어있는"방식인가? – nillls

+1

호출이 비동기 인 한'return'을 사용할 수 없으며, 블로킹 작업 (많은 브라우저에서 UI가 멈춘다)으로 인해 동기 요청을 실제로하고 싶지 않습니다. –

0

음, Alxandr이 제공 한 솔루션을 대체했습니다. 결과를 원한다면 콜백을 구현해야하지만, 결과에 신경 쓰지 않고 처음 두 인수를 ActionProxy로 호출하고 콜백 함수가 다음과 같이 존재하는지 확인하십시오.
function ActionProxy(action, input, callback){

$.post("ActionProxy.php?method="+action, {data:input}, function(data, textStatus, xhr){
if(callback){
callback(data); }
});

}

두 인수를 사용하여 세 개의 인수를 호출 할 때 오류가 발생할 것으로 예상됩니다. 오 잘 - 자바 스크립트는 이상한 언어입니다. :)