我想像 $httpProvider.interceptors 在 angularjs 中那样拦截 REST 请求的响应:https://docs.angularjs.org/api/ng/service/$http
我正在使用 jQuery 制作一个非常小的界面,并且不想仅为此使用 Angular。
你有想法吗?
实际上我真正要解决的问题与此相同:处理跨域中 REST 响应的 301 和位置标头
但我想用jquery以同样的方式解决它。
我尝试了这个但没有成功:(只捕获 0 状态,从未捕获 301...)
如何在事件处理程序之前拦截 jQuery 中的 ajax 响应?
为了回答 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);
}
}
});
Here is my console :
![console responses](https://i.stack.imgur.com/3PFmO.png)
其中说:
XMLHttpRequest cannot load *******. The request was redirected to '**************', which is disallowed for cross-origin requests that require preflight.
0
Error: error:
如果准确地解释 OP 中的问题,则要求是基于以下内容执行任务statusCode
(301
)从返回$.ajax()
称呼 ? ;之前,或代替success
, error
打回来 ?
看来error
OP 处的回调发生在给定响应之后statusCode
。下面的部分应该调用statusCode
在任何之前回调success
, error
可能附加到的回调$.ajax()
.
Try
$.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);
};
}
}
});
jsfiddlehttp://jsfiddle.net/guest271314/D23k2/
See http://api.jquery.com/jquery.ajax/#jQuery-ajax-settings
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)