【发布时间】:2013-09-13 11:17:30
【问题描述】:
我正在使用 jQuery.ajax 上传文件,并且在现代浏览器(如 Google Chrome、Mozilla Firefox、Opera 除外)中一切正常,除了 Internet Explorer 10。
new FormData($('.uploadForm')[0]) 在 IE10 中不起作用,但如果我只尝试使用这段代码:new FormData($('.uploadForm')) 它可以工作...看起来它不接受特定索引处的元素或其他什么?我真的不明白这个很好,这就是我寻求帮助的原因。
对于这个 IE10 示例,是否存在任何解决方法?
JS:
var form = new FormData($('.uploadForm')[0]);
config.progressBar.progressWidth = 0;
$('.uploadForm .valueBox').fadeOut('slow',function(){
$(this).addClass('hidden')
$('.meter').removeClass('hidden').width(config.progressBar.width);
$.ajax({
url: '../../uploads/some.php',
type: 'POST',
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){
myXhr.upload.onprogress = progress;
}
return myXhr;
},
success: function (res) {
console.log(res)
},
data: form,
cache: false,
contentType: false,
processData: false
});
平安some.php代码:
foreach($_FILES["file"]["error"] as $key => $value) {
if ($value == UPLOAD_ERR_OK){
$name = $_FILES["file"]["name"][$key];
$arr_files = getimagesize($_FILES["file"]["tmp_name"][$key]);
$width = $arr_files[0];
$height = $arr_files[1];
$mime = $arr_files['mime'];
copy($_FILES['file']['tmp_name'][$key], '../uploads/upload/'.$name);
echo json_encode($_FILES);
}
}
抛出 IE10 错误:SCRIPT5: Access is denied.
【问题讨论】:
-
您的代码可以在 IE9 及更早版本中运行吗?
-
否,因为据我所知 IE9 及更早版本根本不支持 FormData...:/
-
它在其他“真正的”浏览器中是否有效?
-
你的意思是 Chrome 等?那么是的,它工作得很好。
-
好吧,一个可能的原因是,如果结果数组只包含一项,则IE10将类型Array更改为String类型。
标签: javascript php jquery internet-explorer form-data