Как отменить загрузку jQuery - PullRequest
5 голосов
/ 18 ноября 2011

Моя проблема здесь в том, что моя главная страница загружает некоторые медленные страницы asp в мои div через jQuery:

$("#content").load("really_slow.asp");

Но если я пытаюсь перейти на другую страницу на моем сайте, нажав ссылку перед ASPстраница готова, она не отпускает меня, пока она не загрузится.

Я пробовал несколько способов, но, похоже, ничего не работает .... Я пробовал что-то вроде этого:

var request = $.ajax({
    type: 'GET',
    url: 'really_slow.asp',
    success: function(result){
        $("#content").html(result);
    }
});


$("a").click(function() { 
    request.abort();
});

без разницы ...

Ответы [ 2 ]

3 голосов
/ 18 ноября 2011

Вы почти на месте, только одна критическая ошибка в вашем коде. Должно быть:

var request = $.ajax({
    type: 'GET',
    url: 'really_slow.asp',
    success: function(result){
        $("#content").html(result);
    }
});


$("a").click(function() { 
    request.abort();
});

Метод abort() должен вызываться для объекта jqXHR, а не для #content div. См .: Прервать Ajax-запросы, используя jQuery

.
1 голос
/ 18 ноября 2011

Это не jQuery - посмотрите эту демонстрацию: http://jsfiddle.net/H6j4k/1/

Так что это должен быть IIS.Если вы загружаете несколько страниц asp одновременно, возможно, IIS слишком занят обработкой этих запросов, чтобы обработать ваш следующий запрос.Отмена запроса AJAX не приведет к тому, что IIS прекратит обработку запроса - он просто остановит браузер от ожидания ответа.

Попробуйте добавить внешнюю ссылку на свою страницу и перейти к ней.Также попробуйте открыть новую вкладку в вашем браузере и попытаться попасть на ваш сервер.Если вы можете перейти на внешнюю страницу, и особенно если вы не можете поразить свой сервер, даже в новой вкладке, совершенно очевидно, что IIS является вашим узким местом.Если это так, пришло время перестроить ваш код так, чтобы вы могли получить, делая меньше одновременных запросов.Выполните это, отправляя запросы по одному или комбинируя запросы, чтобы вы могли получить все свои данные за один раз.

...