javascript – jquery中的angularjs拦截器的等价物

我想截取来自REST请求的响应,因为$httpProvider.interceptors在agularjs中执行:

https://docs.angularjs.org/api/ng/service/ $HTTP

我正在使用jQuery创建一个非常小的接口,并且不想为此使用angular.
你有想法吗?

实际上我要修复的真正问题与此相同:
Dealing with a 301 and location headers for a REST response in cross-domain

但我想用jquery以同样的方式解决它.

我尝试了这个没有成功:(只抓到0状态永远不会301 …)

How can I intercept ajax responses in jQuery before the event handler?

为了回答V31,我这样做了:

$.ajaxSetup({
    error: function(jqXHR, textStatus, errorThrown) {
        if (jqXHR.status == 301) {
            alert("Element not found.");
        } else {
            console.log(jqXHR.status);
            console.log("Error: " + textStatus + ": " + errorThrown);
        }
    }
});

这是我的控制台:

哪个说:

XMLHttpRequest cannot load *******. The request was redirected to '**************', which is disallowed for cross-origin requests that require preflight. 
0 
Error: error:  

最佳答案 如果准确地解释OP的问题,那么要求是基于从$.ajax()调用返回的statusCode(301)执行任务? ;在成功之前,或者代替成功,错误回调?

出现在给定响应statusCode之后OP发生错误回调.下面的部分应该在任何成功之前调用statusCode回调,可以附加到$.ajax()的错误回调.

尝试

    $.ajaxSetup({
        statusCode: {
            301: function (data, textStatus, jqxhr) {
                var callback = function (name) {
                  $("#results").html(name)
                };
                if (jqxhr.status === 301) {
                // do stuff
                    alert(jqxhr.readyState, jqxhr.getAllResponseHeaders());
                    callback("response: " + String(data || jqxhr.responseText) 
                            + "<br />textStatus: " + textStatus 
                            + "<br />statusCode : " + jqxhr.status 
                            + "<br />statusText : " + jqxhr.statusText);
                };

            }
        }
    });

jsfiddle http://jsfiddle.net/guest271314/D23k2/

http://api.jquery.com/jquery.ajax/#jQuery-ajax-settings

点赞