我正在尝试创建一个递归的$.ajax()调用者callARIs,它可以根据序列末尾引用的回调函数之前的输入运行许多$.ajax()调用。这旨在在表单提交时运行,并使用 3 个函数进行设置:
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 调用都按预期运行,问题是回调在运行时"不是一个函数"。我认为这是由于通过递归传递引用而被破坏的。
我正在尝试找到一种方法来使提交处理程序能够定义 callARI 的参数和表单提交的所需回调。我可以通过传递索引和编写逻辑来调用callARI中的正确函数来解决此问题,但是我希望有一个更优雅的解决方案,在创建新表单和回调时不需要更新callARI或submitHandler。
提前感谢您对我如何解决此问题的任何见解。
我的递归调用中添加的一个额外参数覆盖了函数引用,谢谢凯尔!