如何从 jQuery Ajax 访问原始 XHR 对象? 问题是,新的 XMLHttpRequest Level 2 规范提供了一个名为上传的 XHR 子属性,但显然 jQuery 还没有。我想继续使用 jQuery Ajax,但我不知道如何将新功能与当前的 jQuery 库合并。
最佳答案
在新版本的 JQuery 中,原始 xhr 对象被包装在 jqXhr 对象中,它没有任何对 xhr 的新上传属性的引用,并且在文档中也不是很清楚如何去做。 我发现这样做的方式,通过一些额外的设置来获得成功的 jquery-ajax-HTML5 文件 uploader 是:
var formData = new FormData($('#myForm')[0]);
$.ajax({
url: 'upload.php',
type: 'POST',
xhr: function() {
myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){
myXhr.upload.addEventListener('progress',progressHandlerFunction, false);
}
return myXhr;
},
data: formData,
cache: false,
contentType: false,
processData: false
});
使用 $.ajaxSettings.xhr() 我得到原始的 xhr,然后我测试它是否具有属性上传来绑定(bind)进度事件以控制进度(HTML5?)栏。其他设置允许我通过 jquery ajax 将表单作为 FormData 对象发送。
关于jquery - XHR Level2 与 jQuery 用于文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8437544/