Вложение вызовов Ajax в прототип

#javascript #prototypejs

#javascript #prototypejs

Вопрос:

Мне нужно выполнить два Ajax-вызова, один из которых зависит от возвращаемого значения предыдущего вызова. Я попытался создать новый объект Ajax из функции onComplete внешнего объекта, однако, похоже, что это никогда не вызывается.

Вызывается завершенная функция внешнего объекта. Код выполняется до того момента, когда я создаю второй объект Ajax.

Это выглядит примерно так:

 function called_from_page() {
  new Ajax.Request(
    '/request_url',
    { method: 'post', parameters: '', onComplete: function(originalRequest) {
      if (originalRequest.responseText == '0') {
         // do something
      } else {
         call_next_ajax();
      }
    }});
 }

 function call_next_ajax() {
    new Ajax.Request(
       '/next_request_url',
       { method: 'post', parameters: '', onComplete: some_other_function });
  }
  

Итак, проблема в том, что вызывается call_next_ajax, но ajax-запрос внутри него не вызывается.

Комментарии:

1. Ошибок нет. Просто не вызывается.

Ответ №1:

Единственная проблема, о которой я могу думать, это: нет ‘next_request_url’ или нет ‘some_other_function’. В обоих случаях ‘call_next_ajax()’ выполняться не будет.

Ответ №2:

Отложите второй шаг, изменив…

 call_next_ajax();
  

…кому…

 call_next_ajax.defer();