递归&传递Ajax回调

时间:2016-02-26 19:52:31

标签: javascript jquery ajax recursion

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

1 个答案:

答案 0 :(得分:0)

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