有没有办法在我完成处理程序的jQuery XHR(从$ .get()调用创建)来查找响应中的问题,然后触发注册的后续处理程序(谎言失败&总是)与自定义错误消息?jQuery AJAX或XHR请求触发失败从回调完成回调
是这样的:
$.get(URL)
.done(
function (data, status, res) {
if(/*some condition*/){
this.Reject(res, status, "some reason");
return
}
//Do stuff on success
}
)
.fail(
//Common error handler here
)
.always(
//common always handler here
);
上做了二次过滤器的种类。原因当然是所有的API在200响应中推送错误,jQuery永远不会知道这是一个错误。
工作没有没有!失败方法在ajax调用期间失败时执行。服务器端的错误仍会通过有效的响应,但不会被视为错误。如果您的服务器端代码失败,您可以通过传递无效内容或400头或其他任何会触发失败方法的触发器来触发失败方法,但是您无法在done方法中调用它,并且它不适合做任一。 – adeneo
这怎么不合适?期货/承诺/任务能够触发错误回调很常见。 –
是的,但是如果你创建了一个promise,它可以被拒绝来触发失败方法,在ajax调用中,fail方法让你知道调用本身出了问题,而来自服务器的任何有效响应都是成功的ajax调用。在服务器端发生的任何错误都无法输出,无论您的预期如何,都应该在成功处理程序中找到。或者至少这是通常的做法,因为您无法从完成的方法触发失败方法,因为承诺已经在那个时候解决了。 – adeneo