【发布时间】:2025-12-11 08:45:02
【问题描述】:
如何强制来自$.ajax 的成功响应以从“完成”处理程序中触发其“失败”处理程序?
jQuery documentation 表示 jqXHR 对象实现了 Promise 接口,这意味着它没有 reject 方法。
下面显示了一些代码,用于侦听在另一个范围内创建的 jqXHR 对象上的故障。
如果成功的响应实际上是格式正确的错误,我想触发正在侦听“失败”的处理程序。
// common function
function doAjax(options) {
return $.ajax(options).fail(function() {
// common error handling
}.done(function(result, status, xhr) {
if (result.isBAD) {
xhr.reject(); // <- not a jqXHR method
}
}));
}
// listening elsewhere
doAjax(options).fail(function() {
// specific error handling
});
【问题讨论】:
-
我不相信你可以。鉴于
done/fail旨在处理请求的状态,而不是其内容,因此您尝试创建的逻辑违反了该原则。 -
也许 doAjax 函数可以返回自定义的 Deferred 对象?
-
我猜这意味着客户端代码无法访问原始 XMLHttpRequest,但我可能能够忍受
-
是的,您可以返回您自己的承诺/推迟选择解决/拒绝的案例。
-
可能的相同问题:*.com/questions/17800176/…
标签: javascript jquery ajax