递归和传递 Ajax 回调

Recursion & Passing Ajax Callback

本文关键字:Ajax 回调 递归      更新时间:2023-09-26

我正在尝试创建一个递归的$.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。
提前感谢您对我如何解决此问题的任何见解。

我的递归调用中添加的一个额外参数覆盖了函数引用,谢谢凯尔!