2016-02-26 8 views
0

Я пытаюсь создать рекурсивный вызов $ .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 при создании новых форм и обратных вызовов.
Заранее благодарим за то, как я смог решить эту проблему.

+1

Похоже, что 'sqi' передается как 4-й параметр для рекурсивных вызовов' callARIs'. Это эффективно заменяет ваш параметр «Обратный звонок» (и, вероятно, не является функцией). – Kyle

+0

...... теперь я просто чувствую себя глупо .... но тем не менее, Кайл, я не знаю, как я пропустил это, когда я удалил sqi как необходимый параметр – M31

+0

опечатки всегда грубые. не беспокойся. – Kyle

ответ

0

один дополнительный параметр, добавленный в мой рекурсивный вызов, переписал ссылку на функцию, спасибо Кайлу!