2016-12-14 8 views
0

私は複数のGET ajax呼び出しとそのわずか数行のコードがありますが、私は基本的にすべての機能に$.ajax({})を繰り返しています。jqueryモジュラーajaxコール

代わりに$.ajax({})の1つの機能を使用し、これを機能に使用できますか?毎回$.ajax({})を繰り返す必要はありませんか?

このようなものかもしれませんが、私は正しいとは思えませんが、ただの概念です。

function ajaxCall(url, method) { 
$.ajax({ 
    url: url, 
    method: method, 
    success: function(){ } // however this should come in the below function 
}) 
} 

function firstCall() { 
var url = 'www.urlsample.com'; 
var methodType = 'GET' 
ajaxCall(url, methodType).success() // get the data from this function? 

} 

これはどういうことですか?すべての関数に対してajax呼び出しを繰り返さないようにします。

+0

あなたはこれを行うことができますが、あなたがしていることはすべて '$ .ajax'をラップしていることです。かなり冗長です。 –

+0

はよりよい解決策ですか? – MrNew

+0

実際にはありません。あなたが従っているパターンは '$ .ajax'を直接呼び出すだけの利点はありません。 '$ .ajaxSetup()'のデフォルトのオプションを設定したい場合は –

答えて

2

jQueryの.ajax()メソッドはPromise-Wrapperを返します。

function ajaxCall(url, method) { 
// return promise 
return $.ajax({ 
    url: url, 
    method: method 
}); 
} 

function firstCall() { 
var url = 'www.urlsample.com'; 
var methodType = 'GET' 
ajaxCall(url, methodType).then(function(result) { 
    // success handler 
}, function(error) { 
    // error handler 
}); 
} 
+0

呼び出しが失敗した場合に 'firstCall'にエラーハンドラを追加する方法はありますか? – MrNew

+0

私は、成功ハンドラとエラーハンドラの両方を扱う '.then()'に対する答えを編集しました。 IIRC jQueryのPromise-Wrapperは、拒否された約束を処理するための '.fail()'メソッドも提供しています。 – jAndy

関連する問題