我广泛使用$ .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永远不会触发。
答案 0 :(得分:6)
ajaxError
。该特定功能中的响应代码被视为“成功”代码;其他任何事情都是失败的。
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>
您的整页是什么样的?