gpt4 book ai didi

javascript - 相当于jquery中的angularjs拦截器

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:10 26 4
gpt4 key购买 nike

我想像 $httpProvider.interceptors 在 agularjs 中那样拦截来自 REST 请求的响应: 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);
}
}
});

这是我的控制台: console responses

其中说:

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) 执行任务> 打电话? ;在 success 之前,或代替 error 回调?

OP 处的 error 回调似乎发生在给定响应 statusCode 之后。下面的片段应该在任何 success 之前调用 statusCode 回调,error 回调可能附加到 $.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

关于javascript - 相当于jquery中的angularjs拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25076904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com