Как я могу обнаружить 'какой-либо' запрос ajax, завершаемый с помощью jQuery?

У меня есть страница, где я могу вставить некоторый JavaScript / jQuery для управления выводом. Я не имею никакого другого контроля над разметкой страницы и т.д.

Я должен добавить дополнительный элемент с помощью jQuery после каждого подарка на странице. Проблема - то, что элементы сгенерированы через асинхронный вызов на существующей странице, которая происходит после того, как $ (документ) .ready завершен.

По существу мне нужен способ назвать мой jQuery после того, как страница загрузилась, и последующие вызовы ajax завершились. Существует ли способ обнаружить завершение какого-либо ajax, обращаются к странице и затем вызывают мою собственную функцию для вставки дополнительных элементов после недавно созданного s?

14
задан Brian Scott 26 May 2010 в 10:27
поделиться

4 ответа

К сожалению, это не применимо, поскольку, похоже, ОП не использует $.ajax() или любой jQuery ajax метод для фактической загрузки контента, но оставляю это здесь на случай, если будущие гуглеры будут делать это.


Вы можете использовать любое из глобальных событий ajax, которые отвечают вашим потребностям, вам, вероятно, нужны $.ajaxComplete() или $.ajaxSuccess().

Например:

$(document).ajaxSuccess(function() {
  alert("An individual AJAX call has completed successfully");
});
//or...
$(document).ajaxComplete(function() {
  alert("ALL current AJAX calls have completed");
});

Если вы хотите запустить просто какую-то общую функцию, то прикрепите их к документу (под ними просто события). Если вы хотите показать что-то конкретное, например, модальное окно или сообщение, вы можете использовать их немного аккуратнее (хотя, похоже, это не то, что вам нужно), например, так:

$("#myModal").ajaxComplete(function() {
  $(this).fadeIn().delay(1000).fadeOut();
});
47
ответ дан 1 December 2019 в 06:15
поделиться

Вы можете использовать .live () / .delegate () .

0
ответ дан 1 December 2019 в 06:15
поделиться

Как я понял, вы используете некоторую Ajax-функцию jQuery в вашем обработчике ready. Поэтому вы можете просто передать ей другую функцию, которая будет вызвана после того, как ваша Ajax-функция получит ответ. For example

$(document).ready(function(){
    $("#some_div").load('/some_url/', function(){
        /* Your code goes here */
    });
});
1
ответ дан 1 December 2019 в 06:15
поделиться

Этот пример просто показывает и скрывает элементы в начале и конце ajax-вызовов с помощью jQuery:

    $("#contentLoading").ajaxSend(function(r, s) {
        $(this).show();
        $("#ready").hide();
    });

    $("#contentLoading").ajaxStop(function(r, s) {
        $(this).hide();
        $("#ready").show();
    });

#contentLoading - это индикатор выполнения gif-изображения.

2
ответ дан 1 December 2019 в 06:15
поделиться
Другие вопросы по тегам:

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