中止jQuery()。load()

时间:2010-06-09 01:57:04

标签: javascript ajax jquery

.load()库的jQuery功能允许您有选择地从其他页面加载元素(受某些规则约束)。我想知道是否可以中止加载过程。

在我们的应用程序中,用户可以浏览项目列表。他们可能会选择单击一个按钮来加载并显示另一个文档中有关项目的其他信息(这可能需要一些时间)。如果他们在.load()仍在发生的情况下选择列表中的其他项目,我希望中止加载。

这可能吗?它甚至值得吗?有什么想法吗?

4 个答案:

答案 0 :(得分:35)

您无法直接使用.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() method on the XMLHttpRequest object来中止负载。

答案 1 :(得分:8)

尼克的答案几乎就是我所需要的,但并不完全。我使用.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();

答案 2 :(得分:1)

您可以手动使用jQuery.ajax来执行此操作。它将返回XMLHttpRequest对象,您可以根据需要调用abort。在成功处理程序中,您可以使用jQuery.html

答案 3 :(得分:1)

$("#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();
  }
});