我怎样才能访问来自jQuery的阿贾克斯原始XHR对象? 问题是,新的XMLHttpRequest级别2规范提供XHR称为上传的子属性,但显然jQuery的没有它。我想使用jQuery Ajax来保持,但我不知道如何与目前的jQuery库合并新功能。XHR Level2的使用jQuery文件上传
6
A
回答
15
jQuery中的新版本的原始XHR对象被包裹在jqXhr对象不具有对XHR的新上传属性和文档中的任何参考不是很清楚如何做到这一点无论是。 的路上,我发现做到这一点,有一些额外的设置,以获得一个成功的jQuery的Ajax的HTML5文件上传为:
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()我得到的origianal XHR,然后我考如果它有属性上传来绑定进度事件来控制进度(HTML5?)栏。其他设置允许我通过jQuery AJAX发送形式为FORMDATA对象。
9
稍加修改,以DannYOs答案。我做了一个jQuery插件,你可以调用一个文件输入来简化它。你只要传递你的上传脚本,然后传递你的成功函数,然后传递你的进度函数。
$.fn.upload = function(remote,successFn,progressFn) {
return this.each(function() {
var formData = new FormData();
formData.append($(this).attr("name"), $(this)[0].files[0]);
$.ajax({
url: remote,
type: 'POST',
xhr: function() {
myXhr = $.ajaxSettings.xhr();
if(myXhr.upload && progressFn){
myXhr.upload.addEventListener('progress',progressFn, false);
}
return myXhr;
},
data: formData,
cache: false,
contentType: false,
processData: false,
complete : function(res) {
if(successFn) successFn(res);
}
});
});
}
使用
$(".myFile").upload("upload.php",function(res) {
console.log("done",res);
},function(progress) {
console.log("progress", progress);
});
+6
改变'myXhr'到'VAR myXhr '否则你将它变成一个全局变量。 –
相关问题
- 1. 用AJAX上传文件 - XHR
- 2. 节点XHR文件上传事件
- 3. 简单的XHR文件上传不传输文件
- 4. 使用jquery上传文件
- 5. 使用jQuery文件上传
- 6. 文件上传使用jquery
- 7. 使用jquery上传文件?
- 8. 是否可以使用XHR上传文件的目录?
- 9. XHR多个文件上传进度条
- 10. Safari XHR上传文件(有时)
- 11. jQuery的文件上传,使二进制文件上传
- 12. Node.js - 使用XHR强大的上传
- 13. 使用jquery文件上传器的多个文件上传
- 14. 上传文件和数据使用Ajax PHP FORMDATA提交XHR
- 15. 使用HTML5和XHR在codeigniter中多文件上传
- 16. 使用文件上传jQuery插件在Ajax调用中上传多个文件
- 17. 使用jquery文件上传插件并行块文件上传
- 18. 如何获得上传的文件名在PHP中,如果上传的文件使用AJAX jQuery文件上传
- 19. 通过XHR上传文件并将文件写入文件
- 20. 上传文件使用纯JavaScript的Dropbox和支持Firefox上的Xhr 3.6
- 21. 在ASP.NET MVC中使用Jquery文件上传上传文件3
- 22. 使用jquery文件上传器和PHP上传多个文件
- 23. 4GB HTTP文件上传使用jQuery文件上传,Apache和PHP
- 24. 跨域文件上传使用jQuery文件上传
- 25. 使用jquery post的PHP文件上传
- 26. jQuery - 使用ajax的DataTables上传文件
- 27. 使用jquery的.post上传文件
- 28. 使用JQuery Multifile上传插件和iframe的MVC文件上传
- 29. 多个文件上传使用mvc使用jquery文件上传插件
- 30. XHR进度条用于请求和响应的文件上传
答案就在这里:http://api.jquery.com/jQuery.ajax/(标题 “的jqXHR对象”) –