2012-02-28 4 views
1
var ajaxStuff = (function() { 

    var doAjaxStuff = function() { 
     //an ajax call 
    } 

    return { 
     doAjaxStuff : doAjaxStuff 
    } 

})(); 

이 패턴을 사용하고 내 메서드를 호출 할 때 성공적인 ajaxcall의 응답을 가져 오는 방법이 있습니까? 이 같은 것 :자바 스크립트 모듈 패턴, 아약스 함수 콜백

ajaxStuff.doAjaxStuff(successHandler(data){ 
    //data should contain the object fetched by ajax 
}); 

희망을 얻으면, 그렇지 않으면 자세히 설명해 드리겠습니다.

+0

'$ .ajax ('url ')뿐 아니라 다음과 같이 간단하게 전화를 걸 수 있습니다. 성공 (function (data) {...}); – zzzzBov

답변

3

두 가지 : 예를 들어 1. doAjaxStuff 함수에 매개 변수를 추가합니다. doAjaxStuff를 호출 할 때 2. 당신이 jQuery.ajax의의 jQuery 문서를 읽을 필요가 믿고 익명 함수 (또는 함수의 이름)

var ajaxSuff = (function() { 

var doAjaxStuff = function(callback) { 
    // do ajax call, then: 
    callback(dataFromAjaxCall); 
} 

return { 
    doAjaxStuff : doAjaxStuff 
} 

})(); 

// calling it: 

ajaxStuff.doAjaxStuff(function(data){ 
    //data should contain the object fetched by ajax 
}); 
1

그냥 doAjaxStuff 콜백을 받아 보자

var doAjaxStuff = function(callback) { 
    // an ajax call 
    // Inside the Ajax success handler, call 
    callback(response); // or whatever the variable name is 
} 

전반적인 목표에 따라, 당신은 대신 deferred objects을 사용할 수 있습니다 (또는 추가). 이렇게하면 코드가 매우 모듈화됩니다.

var doAjaxStuff = function() { 
    // $.ajax is just an example, any Ajax related function returns a promise 
    // object. You can also create your own deferred object. 
    return $.ajax({...}); 
} 

// calling: 

ajaxStuff.doAjaxStuff().done(function(data) { 
    // ... 
}); 
0

전달합니다.

$.ajax('/path/to/file').success(function (data) { 
    doStuff(); 
}) 
관련 문제