如何在jQuery的load()方法中捕获错误

时间:2009-04-15 19:22:52

标签: jquery ajax error-handling load

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

加载成功完成后,我会在<div>

中显示结果

问题是,有时检索数据时load()会发生错误。

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

4 个答案:

答案 0 :(得分:75)

load() documentation.

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

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

编辑:根据评论的请求添加了根路径以外的路径。

答案 1 :(得分:11)

除了像ÓlafurWaage所建议的那样将回调传递给load()函数之外,您还可以注册“全局”错误处理程序(全局为页面上所有ajax调用的全局)。

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

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

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

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

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

答案 2 :(得分:5)

load()提供回调。

  

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

这就是IIRC的做法。 (尚未测试过)

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

答案 3 :(得分:0)

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

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