0
我試圖創建一個遞歸的$ .ajax()調用方,調用ARIs,它可以在引用回調函數之前根據輸入運行一些$ .ajax()調用序列。這是爲了要在表單提交運行,是用3個功能設置:遞歸&傳遞Ajax回調
jQuery.fn.submitHandler = function(AjaxCallerInput,Callback){
$(this).submit(function(e){
e.preventDefault();
//Validate & Gather Form Data
if(!Valid){ /*ERROR*/ }
else{ callARIs(AjaxCallerInput,formData,null,Callback); }
}
}
function callARIs(Input,formData,i,Callback){
//Process Input to create PostStr and define i if null
$.ajax({ //Call ARI
url: 'ajax.php', method: 'POST', async:true, data: PostStr + formData,
complete: function(xhr){
if(i < Input.length-1){ return callARIs(Input,poststr,i+1,sqi,Callback); }
else{ return Callback(xhr.responseText); }
}
});
}
function someCallback(){ //do stuff with final ajax result }
$("form").submitHandler("ARIstr",someCallback);
的遞歸和AJAX調用按預期都跑,問題是,回調是「不是一個函數」,當談到時間運行。我認爲這是由於通過遞歸傳遞參考而被破壞的。
我想找到一種方法使submitHandler能夠定義callARIs的參數和表單提交所需的回調。我可以通過傳遞索引和編寫邏輯來調用callARI中的正確函數來解決此問題,但我希望獲得更優雅的解決方案,在創建新表單和回調時不需要更新callARIs或submitHandler。
在此先感謝您瞭解我如何解決此問題。
看起來'sqi'正在作爲遞歸調用'callARIs'的第四個參數傳遞。這有效地取代了你的'回調'參數(可能不是函數)。 – Kyle
......現在我只是覺得愚蠢....但是,謝謝沒有那麼少凱爾,我不知道我錯過了這一點,當我刪除sqi作爲所需的參數 – M31
錯別字總是粗糙。別擔心。 – Kyle