【发布时间】:2011-03-10 22:41:16
【问题描述】:
似乎只有当 ajax 请求能够从服务器获得一些响应时才会触发成功、错误和完成回调。
因此,如果我关闭服务器,则不会执行以下错误回调并且请求会静默失败。
$.ajax({
type: "GET",
url: "http://localhost:3000/",
dataType: "script",
success: function() {
alert("success");
},
error: function() {
alert("error");
}
});
在根本无法访问服务器时抛出错误的最佳方法是什么。
编辑 - 根据我的尝试和阅读,jQuery 的内置错误处理似乎不适用于 JSONP 或 dataType: "script"。所以我打算尝试设置手动超时。
编辑 - 做了更多研究,看起来不仅 ajax 错误回调不起作用,而且您无法使用 dataType 脚本或 jsonp 中止 ajax 请求,并且这些请求会忽略超时设置。
还有一个替代方案 - jquery-jsonp 插件,但它使用了我宁愿避免的隐藏 iframe。所以我决定按照下面的建议创建一个手动超时。如果超时,您无法中止请求,这意味着即使在超时后脚本仍可能加载,但至少会在服务器不可用时触发。
【问题讨论】:
-
Jquery 的 ajax 内置了错误处理(见下面我的回答)你可以使用 ajaxsetup 来应用这些选项。