Отмена jQuery(). Load()
.load()
функция jQuery библиотека позволяет выборочно загружать элементы с другой страницы (с учетом определенных правил). Я хотел бы знать, можно ли прервать процесс загрузки.
В нашем приложении пользователь может просматривать список элементов. Они могут выбрать кнопку, которая загружает и отображает дополнительную информацию об элементе из другого документа (что может занять некоторое время). Если они выбирают другой элемент в списке, пока .load()
все еще происходит, я хотел бы, чтобы загрузка была прервана.
Возможно ли это? Это даже стоит? Любые идеи?
Dan
Ответы
Ответ 1
Вы не можете сделать это с помощью .load()
напрямую, так как он возвращает объект jQuery для цепочки, но если вы перейдете к полному $.ajax()
позвонить с .html()
, вы можете, например это:
var xhr = $.ajax({
url: 'mypage.htm',
success: function(data) {
$("#myElement").html(data);
}
});
//if needed, abort the request later..
xhr.abort();
Это использует метод .abort()
объекта XMLHttpRequest, чтобы прервать загрузку.
Ответ 2
Ответ Ник был почти тем, что мне нужно, но не совсем. Я использовал .load() для загрузки только изображения со страницы. Итак, расширяя ответ Ник...
Итак, вместо...
$('#myElement').load('mypage.htm #myImage');
Теперь я использую...
var xhr = $.ajax({
url: 'mypage.htm',
success: function(data) {
$("#myElement").html($(data).find("#myImage"));
}
});
//if needed, abort the request later..
xhr.abort();
Ответ 3
Вы можете сделать это, используя jQuery.ajax
вручную. Он вернет объект XMLHttpRequest
, который вы можете вызвать abort
при необходимости. В обработчике успеха вы можете использовать jQuery.html
Ответ 4
$("#myElement").load("/mypage #mayImage", function(response, status, xhr) {
if (status == "error") {
xhr.abort();
}
});
Должно работать так.
или на другом событии, я отправляю проверку на длинном поле, пользователь меняет содержимое, я хочу, чтобы предыдущая проверка была проверена:
xhr.abort();
$("#myElement").load("/mypage #mayImage", function(response, status, xhr) {
if (status == "error") {
xhr.abort();
}
});