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

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

    return { 
     doAjaxStuff : doAjaxStuff 
    } 

})(); 

このパターンを使用する方法はありますか?私のメソッドを呼び出すときに成功したajaxcallからの応答を取得しますか?このようなもの:Javascriptモジュールパターン、Ajax関数コールバック

希望があれば、私は詳しく説明します。

+0

「$ .ajax( 'url')だけでなく、なぜ機能が(データ){...})? – zzzzBov

答えて

3

2つのこと:例えば 1. doAjaxStuff関数にパラメータを追加します。 2. doAjaxStuffを呼び出し、無名関数(または関数の名前)に渡し

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

私はあなたがjQuery.ajaxのためのjQueryのドキュメントを読む必要があると考えています。

$.ajax('/path/to/file').success(function (data) { 
    doStuff(); 
}) 
関連する問題