似乎成功、错误和完整回调仅在 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。因此,我决定按照下面的建议创建手动超时。如果超时,您无法中止请求,这意味着即使超时后脚本仍可能加载,但如果服务器不可用,至少会触发某些内容。
您可以使用setTimeout,并清除它clearTimeout在完整的处理程序中。
var reqTimeout = setTimeout(function()
{
alert("Request timed out.");
}, 5000);
var xhr = $.ajax({
type: "GET",
url: "http://localhost:3000/",
dataType: "script",
success: function() {
alert("success");
},
error: function() {
alert("error");
},
complete: function() {
clearTimeout(reqTimeout);
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)