我试图创建一个递归的$ .ajax()调用者,调用ARI,它可以在序列结束时引用的回调函数之前根据输入运行许多$ .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);
Recursion和ajax调用所有按预期运行,问题是Callback是&#34;不是函数&#34;什么时候运行它。我认为这是因为通过递归传递引用而被破坏了 我试图找到一种方法使submitHandler能够定义callARIs的参数和表单提交所需的回调。我可以通过传递一个索引并编写逻辑来调用callARI中的正确函数来解决这个问题,但我希望有一个更优雅的解决方案,在创建新的表单和回调时不需要更新callARI或submitHandler。 /> 提前感谢您对如何解决此问题的任何见解。
答案 0 :(得分:0)
在我的递归调用中添加了一个额外的参数覆盖了函数引用,谢谢Kyle!