$ .ajaxError如何工作?

时间:2010-06-29 14:38:06

标签: jquery

我广泛使用$ .get,$ .post和$ .getJSON,所以我想看看.ajaxError是如何工作的。我试过这个......

$(document).ajaxError(function (e, xhr, options, error)
{
    console.log(e);
    console.log(xhr);
    console.log(options);
    console.log(error);
});

我也试过把它放在我的$(document).ready().里面。然后我禁用了我的网络连接。从AJAX中的定时POST开始出现了一系列错误(因为它们得到了意想不到的响应),GET s瞬间回来(缓存),但Firebug中没有出现任何其他错误,如同如果永远不会调用ajaxError。我究竟做错了什么?我只是再次尝试没有控制台日志而只是alert('foo'),再一次没有发生任何事情。很多错误,但ajaxError永远不会触发。

2 个答案:

答案 0 :(得分:6)

当实际的XHR没有从服务器as you can see in the jQuery source的给定响应中收到HTTP成功代码时,会触发

ajaxError。该特定功能中的响应代码被视为“成功”代码;其他任何事情都是失败的。

当你的XMLHTTPRequest以4 ajaxError结束(收到所有数据时)时,jQuery也只分支到触发readyState的代码,所以我认为关闭你的网络连接实际上会放你完全处于不同的XHR状态(可能是条件2的循环?)。 You can see how jQuery branches in the source, too

基本上,它看起来服务器没有说请求失败并且发回上面那个范围之外的代码,你可能不会看到ajaxError被触发,根据jQuery,它没有' t收到错误。

答案 1 :(得分:1)

我从jQuery doc获得了以下示例。

http://api.jquery.com/ajaxError/

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>jQuery Sandbox</title>
  </head>
  <body>
    <div class="trigger">Trigger</div>
    <div class="result"></div>
    <script type="text/javascript" src="../scripts/jquery-1.4.js"></script>
    <script type="text/javascript">

        $(function () {

            $(document).ajaxError(function (e, xhr, settings, exception) {
                console.log(xhr.status);
            });

            $('.trigger').click(function () {
                $('.result').load('ajax/thisUrlDoesNotExist.html');
            });

        });

    </script>
  </body>
</html>

您的整页是什么样的?