我正在尝试使用jQuery.ajaxPrefilter API 来制作 HTTP Ajax 拦截器。
这是jsFiddle
如您所见,我可以在 prefilter 函数中访问 jqXHR 对象,我什至可以 console.log 整个 jqXHR 对象,但是某些属性,例如 responseJSON 在直接指向它们时返回 undefined。这是我要修改的属性以完成 HTTP 拦截器。
关于为什么我无法访问 jqXHR.responseJSON 属性的任何想法?
这是在 jsFiddle 上运行的代码片段
var data = {
'msg': 'hey!'
};
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
console.log(jqXHR); --> Returns the entire jqXHR object
console.log(Object.isSealed(jqXHR)); --> return false
console.log(Object.isFrozen(jqXHR)); --> return false
console.log(jqXHR.responseJSON); --> return undefined
});
$.ajax({
type: 'POST',
url: '/echo/json/',
cache: false,
data: {
json: JSON.stringify(data),
delay: 0
}
}).done(function (data) {
document.getElementById('msg').innerHTML = data.msg;
});
其余代码按预期工作,您可以在我的小提琴上查看。