jQuery AJAX或XHR请求触发完成回调的失败回调

Chr*_*our 7 jquery

在我的jQuery XHR(从$ .get()调用创建)的done处理程序中是否存在一种方法来查找响应中的问题,然后使用自定义错误消息触发已注册的后续处理程序(谎言失败并始终)?

这样的事情:

$.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
);
Run Code Online (Sandbox Code Playgroud)

完成后的二次过滤器.原因当然是所有的API在200响应中推送错误,jQuery永远不会知道这是一个错误.

Chr*_*our 5

我想出了如何做到这一点,并且效果很好:

$.get( URL )
.then(
    function (data, status, res) {
        if(/**some error check**/({
             return $.Deferred().reject(res, status, "error message");
        }

        return $.Deferred().resolve(data, status, res);
    }
)
.done(
    function (data, status, res) {
        //Do stuff on success
    }
)

.fail(
//Common error handler here
)
.always(
    //common always handler here
);
Run Code Online (Sandbox Code Playgroud)

像魅力一样工作,现在我在完成时没有凌乱的数据错误处理,我可以专注于处理数据或设置错误消息。