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

Отмена jQuery(). Load()

.load() функция jQuery библиотека позволяет выборочно загружать элементы с другой страницы (с учетом определенных правил). Я хотел бы знать, можно ли прервать процесс загрузки.

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

Возможно ли это? Это даже стоит? Любые идеи?

Dan

4b9b3361

Ответ 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();
  }
});