我怎樣才能訪問來自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對象」) –