2011-06-14 7 views
1

변수를 ajax 쿼리 결과에 설정해야합니다. 이 함수는 비동기 호출이므로 성공 함수에서 결과를 반환 할 수 없다는 것을 알고 있습니다. 그러나 이것은 콜백 함수가되고 동기식 호출로 설정되지 않습니다.jquery 외부 변수 콜백에 ajax 결과를 설정하십시오.

내가 좋아하는 뭔가를 달성하고 싶습니다 : 결과 = 데이터

내 구문을 잘하지 알고, 내가 시도 많은 변화와 havent 한 작동 뭔가를 발견

myMethod: function() { 
    var result = function(callback) { 
     this.getResults(params) 
    } 
}, 

getResults: function(params) { 
    $.ajax({ 
     type: 'GET', 
     url: 'some/url', 
     data: params, 
     success: function(data) { 
     callback(data).call(); 
     } 
    }); 
} 

. 어떤 도움이라도 너무 감사 할 것입니다. 고맙습니다!

답변

2

당신은 아주 가깝습니다. 콜백 함수를 getResults으로 전달하십시오. 나는 그 이후 var result =을 제거

myMethod: function() { 
    this.getResults(params, callback); 
}, 

getResults: function(params, callback) { 
    $.ajax({ 
     type: 'GET', 
     url: 'some/url', 
     data: params, 
     success: function(data) { 
     callback(data); 
     } 
    }); 
} 

참고 그냥 당신이 언급 한 비동기 성을 부여하려면 않을거야. data의 추가 처리를 수행해야하는 경우 콜백이 발생해야합니다.

+0

감사합니다. myMethod의 변수에 데이터를 할당하지 않은 경우? 그렇다면 그것을 어떻게 참조 할 수 있습니까? – MBax

+0

죄송합니다.'data' 대신'callback'을 사용하셨습니까? 나는 이해하지 못한다. –

+0

잘 모르겠 음;) myMethod의 변수를 데이터와 동일하게하려고합니다. 데이터는 json 응답이며이를 통해 반복하고 myMethod에서 설정 한 다른 변수와 비교하려고합니다. 그게 가능합니까? – MBax

-1

async를 false로 설정해 보았습니까?

myMethod: function() { 
    var result = function(callback) { 
     this.getResults(params) 
    } 
}, 

getResults: function(params) { 
    $.ajax({ 
     type: 'GET', 
     async:false, //<-- Here 
     url: 'some/url', 
     data: params, 
     success: function(data) { 
     callback(data).call(); 
     } 
    }); 
} 
+1

*하지만 이것을 달성하고 싶습니다 콜백 함수와 ** 동기식 호출 ***로 설정되지 않습니다 .... 그리고 귀하의 코드가 작동하지 않습니다 ('콜백'정의되지 않은 등) 그냥 OP의 암호. –

+0

OP는 특별히이 작업을 원하지 않는다고 말했습니다. –

관련 문제