【问题标题】:How to catch error in jQuery's load() method如何在 jQuery 的 load() 方法中捕获错误
【发布时间】:2010-10-19 16:37:18
【问题描述】:

我正在使用 jQuery 的 .load() 方法在用户单击按钮时检索一些数据。

加载成功完成后,我在<div> 中显示结果。

问题是,有时load() 在检索数据时会出现错误。

如何在load() 中发现错误?

【问题讨论】:

  • 这个问题是2009年的,所以请注意$.load: 在jQuery 3.0之前,事件处理套件也有一个名为.load()的方法。旧版本的 jQuery 根据传递给它的参数集确定要触发的方法。

标签: jquery ajax error-handling load


【解决方案1】:

load() 提供回调。

回调。
ajax请求完成时调用的函数(不一定成功)。

这就是它完成 IIRC 的方式。 (没有测试过)

$("#feeds").load("feeds.php", {limit: 25}, 
    function (responseText, textStatus, XMLHttpRequest) {
        // XMLHttpRequest.responseText has the error info you want.
        alert(XMLHttpRequest.responseText);
});

【讨论】:

  • 函数的第一个参数是responseText。无需使用 XMLHttpRequest.responseText...
【解决方案2】:

除了按照 Ólafur Waage 的建议将回调传递给 load() 函数之外,您还可以注册“全局”错误处理程序(对于页面上的所有 ajax 调用来说,全局的就是全局的)。

至少有两种方法可以注册全局 Ajax 错误处理程序:

只用ajaxError()注册错误处理程序:

$.ajaxError(function(event, request, settings) {
      alert("Oops!!");
});

或者,使用ajaxSetup() 同时设置错误处理程序和其他属性:

$.ajaxSetup({
    timeout: 5000,
    error: function(event, request, settings){
        alert("Oops!");
    }
});

【讨论】:

  • 我使用的是 jquery 3.5,它没有 $.ajaxError 功能,尽管它仍在文档中:api.jquery.com/ajaxError
  • 从 jQuery 1.9 开始,它是 $(document).ajaxError 而不仅仅是 $.ajaxError
【解决方案3】:

load() documentation.

只是关于如何发生加载错误的一点背景......

$("body").load("/someotherpath/feedsx.pxhp", {limit: 25}, 
    function (responseText, textStatus, req) {
        if (textStatus == "error") {
          return "oh noes!!!!";
        }
});

编辑:根据 cmets 的要求添加了根路径以外的路径。

【讨论】:

  • 感谢 altCongnito。它成功了!顺便说一句,我可以问另一个相关的问题吗?另一个问题是文件路径!我使用asp.net。我在母版页中编写 load() 代码。参数 Url 类似于 feedsx.aspx。当内容页面位于根文件夹下时它可以工作。但是如果内容页面位于其他子文件夹下则不起作用。帮助
  • 感谢 jquery 文档的链接。我什至不知道它们的存在!
  • 谢谢 - 加载失败主要是由于加载目标页面时出现问题。
【解决方案4】:

电动工具箱中有一篇名为 "Loading content with jQuery AJAX and dealing with failures" 的文章似乎可以回答您的问题。

显然,您指定的回调函数会传递响应、状态和 XmlHttpRequest 对象,从而允许您确定 ajax 请求的状态并相应地处理条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-06
    • 2012-05-10
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 2017-11-26
    相关资源
    最近更新 更多