如何在 jQuery 的 load() 方法中捕获错误
Posted
技术标签:
【中文标题】如何在 jQuery 的 load() 方法中捕获错误【英文标题】:How to catch error in jQuery's load() method 【发布时间】:2010-10-19 16:37:18 【问题描述】:我正在使用 jQuery 的 .load()
方法在用户单击按钮时检索一些数据。
加载成功完成后,我在<div>
中显示结果。
问题是,有时load()
在检索数据时会出现错误。
如何在load()
中发现错误?
【问题讨论】:
这个问题是2009年的,所以请注意$.load: 在jQuery 3.0之前,事件处理套件也有一个名为.load()的方法。旧版本的 jQuery 根据传递给它的参数集确定要触发的方法。 【参考方案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 请求的状态并相应地处理条件。
【讨论】:
以上是关于如何在 jQuery 的 load() 方法中捕获错误的主要内容,如果未能解决你的问题,请参考以下文章
怎么解决jquery 中 load 事件重复载入js的问题?