本文介紹了IE8/9 中的表單數據的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我已經實現了這個使用 ajax 上傳文件的腳本,它在除資源管理器之外的其他瀏覽器中完美運行,我注意到 IE9 和更少不支持 formData,在 IE 中有沒有 formData 的替代品,我想使用干凈javascript
i have implemented this script for uploading files with ajax, it works perfect in other browsers except for explorer, i noticed that formData is not supported by IE9 and less, are there any alternatives for formData in IE, and i want use clean javascript
function doObjUploadExplorer(url, lnk_id, file, progress, success, content, frm, div_dlg, start_func){
var file_input = null,
frm_data = new FormData(),
req;
try {
//firefox, chrome, safari etc
req = new XMLHttpRequest();
}
catch (e) {
// Internet Explorer Browsers
req = new ActiveXObject("Microsoft.XMLHTTP");
}
if (document.getElementById(file)) {
file_input = document.getElementById(file);
for (var i = 0; i < file_input.files.length; ++i) {
frm_data.append(file, file_input.files[i]);
}
}
req.upload.addEventListener('progress', function(e) { //Event called while upload is in progress
if (progress !== undefined
&& e.lengthComputable) {
$('#' + progress).html('<font>Uploading... ' + Math.round((e.loaded / e.total) * 100) + '%</font>');
}
});
req.upload.addEventListener('load', function(e) { //Event called when upload is completed
$('#' + progress).html('<font>Retrieving updated data...</font>');
});
req.upload.addEventListener('error', function(e) { //Event called when an error is returned by the server
alert('An error has occurred...');
});
req.addEventListener('readystatechange', function(e) {
if (this.readyState === 4) {
if (this.status === 200) {
if (content !== undefined) {
$('#' + content).html(this.response);
}
if (success !== undefined) {
showChkMark(success);
}
} else {
console.log('Server replied with HTTP status: ' + this.status);
}
if (progress !== undefined) {
$('#' + progress).hide();
}
if (div_dlg !== undefined) {
$('#' + div_dlg).dialog('close');
}
$('#' + file)
.attr('disabled', false)
.val('');
}
});
if (progress !== undefined) {
$('#' + progress).show();
}
$('#' + file).attr('disabled', true);
url += (
url.indexOf('?') === -1
? '?'
: '&'
);
url += 'lnk_id=' + lnk_id + '&file=' + file;
req.open('POST', url);
req.setRequestHeader('Cache-Control', 'no-cache');
if (start_func !== undefined) {
start_func.apply();
setTimeout(function() {
req.send(frm_data);
}, 500);
} else {
req.send(frm_data);
}}
推薦答案
IE 中的 FormData 僅支持 IE10,經過研究(我認為)最好的解決方案是使用 ajaxForm:http://malsup.com/jquery/form/ 在 IE8/9 中完美運行,不確定 IE7
FormData in IE is only supported from IE10, after doing some research the best solution for this (my opinion) would be using ajaxForm: http://malsup.com/jquery/form/ works perfect in IE8/9, not sure about IE7
這篇關于IE8/9 中的表單數據的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!
【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!