Подтвердить что ты не робот

Проверка ожидающих запросов AJAX или запроса HTTP GET/POST

Как проверить, ожидает ли страница ожидающих запросов AJAX или HTTP GET/POST? Я использую javascript и/или python для этой проверки.

то, что я хотел сделать, это выполнить script, если страница завершила все запросы. onload не работает для меня, если вы использовали панель netbugs net, вы бы знали. onload срабатывает при загрузке страницы, но есть вероятность, что где-то там будет находиться ожидающий запрос.

благодарим вас заранее.

4b9b3361

Ответ 1

понял это. спасибо за усилия ребята. просто и просто javascript.

interValRef = 0;

interValRef = setInterval("checkState();",100)

function checkState(){
    if(document.readyState == 'complete'){
        clearInterval(interValRef);
        myFunc();
    }
}

Ответ 2

Я вижу, вы упоминаете, что используете Prototype.js. Вы можете отслеживать активные запросы с помощью Prototype, проверяя значение Ajax.activeRequestCount. Вы можете проверить это с помощью setTimeout или setInterval, чтобы убедиться, что все запросы, запущенные при загрузке страницы, завершены (если это то, что вы хотите сделать)

Ответ 3

Я думаю, вы хотите знать, полностью ли загружен HTML. В этом случае вы можете использовать событие dom: loaded. Вот пример того, как использовать его с прототипом (но должен быть вариант для других JS-фреймворков):

document.observe("dom:loaded", function() {
  // do whatever you want to do
});

Это событие будет срабатывать, как только будет загружено дерево DOM. Поэтому даже перед загрузкой всех изображений или внешних данных (включая iframe).

Ответ 4

Вам нужно будет отслеживать каждый XMLHttpRequest и контролировать, будет ли он завершен или выполняется асинхронный обратный вызов.

Ответ 5

Предполагая, что вы используете prototype.js, вы можете отслеживать счетчик всех объектов запроса

var ACTIVE_REQUESTS = 0; // GLOBAL

ACTIVE_REQUESTS++
new Ajax.Request('/your/url', {
  onSuccess: function(response) {
    ACTIVE_REQUESTS--;
    // Handle the response content...
  }
}));

console.log("there are " + ACTIVE_REQUESTS + " open AJAX requests pending");

Ответ 6

Вот лучший способ проверить его.

var loadingDone =  document.readyState=="complete" && jQuery.active === 0;

Таким образом, loadDone будет правдой, если будут выполнены Ajax-вызовы. Если его false, вы можете добавить ожидание.