Можно ли выполнить вызов Ajax в другом вызове Ajax в jQuery?

Шаблон "команда" используется в Java, потому что у нас нет закрытий в Java. Функторы являются попыткой реализовать закрытия.

языку А с закрытиями не нужен Шаблон "команда".

9
задан Rohan Kumar 1 May 2017 в 05:00
поделиться

2 ответа

Нет ничего плохого в наличии вызова ajax внутри обратного вызова ajax. Фактически, вы даже этого не делаете, а вот что вы делаете здесь:

  1. Вызов Ajax
  2. Если вызов успешен и возвращает 'captcha', тогда привяжите функцию к событию cbox_closed
  3. Когда cbox_closed событие запускается вызов связанной функции, которая содержит другой вызов ajax

Некоторые вещи, которые необходимо проверить:
Сервер успешно возвращается? (нет 404, 500 ошибок и т. д.)
Вы ожидаете ответа json. Содержит ли он данные вроде {response: 'captcha}, которые вы проверяете?
Когда запускается событие cbox_closed? Вы уверены, что это происходит?

12
ответ дан 4 December 2019 в 13:49
поделиться

Вы передали обратный вызов «успех» в jQuery, но не передали обратный вызов «ошибка». Таким образом, вы игнорируете ошибку. Вот пример, чтобы зафиксировать ошибку и при необходимости отобразить ее в консоли Firebug.

var lastRequest = jQuery.ajax( { type:     "POST"
                               , url:      this._ajaxUrl
                               , data:     postdata
                               , dataType: "json"
                               , success:  _gotAjaxResponse
                               , error:    _gotAjaxError
                               } );

function _gotAjaxResponse( data )
{
  window.console && console.log( data );
}

function _gotAjaxError(xhr, status, error)
{
  // Show server script errors in the console.
  if( xhr.status == 500 )
  {
    var response = xhr.responseText;
    response = response.replace( /\r?\n/g, "" )
                       .replace( /(<\/)/g, "\n$1" )
                       .replace( /<[^>]+>/g, "" )
                       .replace( /^\s+/, "" )
                       .replace( /\s+$/, "" );
    window.console && console.error(response);
  }

  alert("I'm sorry...\n\n"
      + "Unfortunately an error occured while communicating with the server.\n"
      + "Please try again later.");
}
3
ответ дан 4 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: