Я пытаюсь создать рекурсивный вызов $ .ajax() callARIs, который может запускать несколько вызовов $ .ajax() на основе ввода до указанной функции обратного вызова в конце последовательность. Предполагается, что это будет работать на форме представления и настройка с помощью 3 функции:Recursion & Passing Ajax Callback
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 в состоянии определить параметры для callARI и требуемый обратный вызов для отправки формы. Я мог бы обойти это, передав индекс и записывая логику для вызова правильной функции в callARI, но я надеялся на более элегантное решение, которое не требовало обновления callARI или submitHandler при создании новых форм и обратных вызовов.
Заранее благодарим за то, как я смог решить эту проблему.
Похоже, что 'sqi' передается как 4-й параметр для рекурсивных вызовов' callARIs'. Это эффективно заменяет ваш параметр «Обратный звонок» (и, вероятно, не является функцией). – Kyle
...... теперь я просто чувствую себя глупо .... но тем не менее, Кайл, я не знаю, как я пропустил это, когда я удалил sqi как необходимый параметр – M31
опечатки всегда грубые. не беспокойся. – Kyle