是否可以XMLHttpRequest
从$.ajax()
函数的成功回调中访问对象?具体来说,我需要访问XMLHttpRequest.responseBody
IE.根据文档,返回的jqXHR
对象不会公开.responseBody
属性.
这似乎是一个小问题,在处理二进制数据时会产生巨大影响.如果.responseBody
属性或底层XMLHttpRequest
对象不可访问,我将不得不跳过jQuery for ajax并将其编码,shudder,纯javascript.
我实际上在寻找responceBody
变量,而不是responceText
从内部可以轻易访问的变量$.ajax()
您也可以使用beforeSend回调:
$.ajax({
beforeSend: function(jqXHR, settings){
// Here you are the XHR object
console.log(settings.xhr());
}
});
Run Code Online (Sandbox Code Playgroud)
可以覆盖ajax请求的xhr函数.
$.ajax({
...
xhr: function(){
var xhr = jQuery.ajaxSettings.xhr();
// do stuff with xhr;
return xhr;
}
});
Run Code Online (Sandbox Code Playgroud)
或者详细说明Manuel Bitto的答案,可以从beforeSend回调中访问xhr实例:
$.ajax({
beforeSend: function(jqXHR, settings){
var xhr = jQuery.ajaxSettings.xhr();
settings.xhr = xhr
// Do stuff with the xhr instance for this request
xhr.onprogress = function(){
}
console.log(xhr);
}
});
Run Code Online (Sandbox Code Playgroud)
我也希望获取底层的 XMLHttpRequest 对象,以便获取“onprogress”和“upload”属性(在使用 XMLHttpRequest2 的最新浏览器中找到),以便我可以进行本机上传进度处理,而不是使用 hacks 。在深入研究 jQuery 源代码后,我发现您可以通过jQuery.ajaxSettings.xhr()
. 它是一个返回原始 XMLHttpRequest 的函数。
请参阅此处: https: //github.com/jquery/jquery/blob/master/src/ajax/xhr.js
希望有帮助。
归档时间: |
|
查看次数: |
12092 次 |
最近记录: |