2016-12-14 53 views
0

有人可以說明這一點,所以我有多個GET ajax調用和它只有幾行代碼,但我基本上重複$.ajax({})在每個函數上。jquery modular ajax call

我可以使用$.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'。如果你想爲你的所有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()'方法來處理被拒絕的promise。 – jAndy