我遇到問題$.ajax
,$.when
和apply
。我有一個構造函數: Ajax請求沒有被觸發時,它應該是: http://plnkr.co/edit/Ul9d8tB7BHoZyHzzQQyB?p=preview (見控制檯)
function updateGeneralTerm() {
return {
id: "GeneralCondition",
ajax: function() {
return $.ajax({
type: 'POST',
url: "@Url.Action("UpdateGeneralTerms", "Agreements")",
data: $("#GeneralConditions").serialize()
})
}
}
}
//I inject it in my custom function
function CustomFunction(arr) {
let arrOfAjax = arr.map(function (obj) {
return obj.ajax
});
$.when.apply(null, arrOfAjax);
}
CustomFunction([new updateGeneralTerm()];
在我CustomFunction,我檢查其他的東西,因爲它的形式發生了變化..等等。但它似乎與我的問題沒有關係。什麼都沒發生。
將來我可能會有n個特定的術語,我只想在表單發生變化時更新。
我的問題:ajax沒有被$ .when()請求。如果我更改爲返回obj.ajax()
,那麼ajax請求將直接由$ .when()觸發。 我想要$ .when()來處理所有的ajax請求。
http://plnkr.co/edit/Ul9d8tB7BHoZyHzzQQyB?p=preview
這是因爲你使用'AJAX的參考()'函數。你實際上並沒有調用它。嘗試使用'return obj.ajax();'。在證明從數組中的'updateGeneralTerm()'返回到'CustomFunction()'的對象時,有點奇怪。大概這是因爲在你的生產代碼中你實際上會有一個預先填充的數組... ...? –
@RoryMcCrossan =>不工作。如果我在做obj.ajax(),那麼$ .ajax()會被觸發......我確定因爲我評論了$ .when(...)並且它到達了控制器方法。 – Stefdelec
'如果我在做obj.ajax(),$ .ajax()被觸發'這就是我所說的,你試圖達到的目標是不是?也請給予更多的信息,而不僅僅是「它不工作」。什麼不行?它失敗的地方在哪裏?您是否在控制檯檢查了錯誤,或者在網絡選項卡上查看了responseText? –