jQuery Ajax预过滤器无法修改jqXHR对象属性,如responseJSON
我正在尝试使用API制作一个HTTP Ajax拦截器 这是你的电话号码 如您所见,我可以在prefilter函数中访问jqXHR对象,甚至可以对整个jqXHR对象进行console.log,但某些属性(如responseJSON)在直接指向它们时返回未定义。 这是我想要修改的属性,以便完成HTTP拦截器 关于为什么我不能访问jqXHR.responseJSON属性有什么想法吗 下面是在JSFIDLE上运行的代码片段jQuery Ajax预过滤器无法修改jqXHR对象属性,如responseJSON,jquery,ajax,http,interceptor,jqxhr,Jquery,Ajax,Http,Interceptor,Jqxhr,我正在尝试使用API制作一个HTTP Ajax拦截器 这是你的电话号码 如您所见,我可以在prefilter函数中访问jqXHR对象,甚至可以对整个jqXHR对象进行console.log,但某些属性(如responseJSON)在直接指向它们时返回未定义。 这是我想要修改的属性,以便完成HTTP拦截器 关于为什么我不能访问jqXHR.responseJSON属性有什么想法吗 下面是在JSFIDLE上运行的代码片段 var data = { 'msg': 'hey!' }; $.ajax
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;
});
代码的其余部分按预期工作,您可以在我的小提琴上查看。与普通对象$不同。ajaxPreFilter允许您在发送请求之前访问请求。使用,您可以添加一个完整的处理程序functionstatus、statusText、responses、headers,其中responses是一个包含数据类型/值的对象,该数据类型/值包含传输可以使用的所有格式的响应provide@Andreas谢谢你的回复。我知道jqXHR!=XmlHttpRequest.@Andreas如果您运行我的JSFIDLE并检查控制台,您将看到$.ajax.prefilter返回de jqXHR响应,但不要偏离问题。为什么我不能访问reponseJSON属性?如果它存在,我可以通过console.log看到它?responseJSON只有在发送请求并且有来自服务器的响应后才可用-发生在源中。如前所述,$.ajaxPreFilter发生在发送请求之前。