IE 11中未定义FormData

4
我有以下脚本来获取文件数据,它是从文件输入类型中取得的:
var uploadfiles = $("#upFile").get(0);
var uploadedfiles = uploadfiles.files;

var fromdata = new FormData();
for (var i = 0; i < uploadedfiles.length; i++) {
    fromdata.append(uploadedfiles[i].name, uploadedfiles[i]);
}

// ajax code omitted that uploads file

这在我测试过的所有浏览器中都能很好地工作,但在IE 11中不行。它似乎无法理解什么是FormData()?我已经阅读了很多在线解决方案,但是没有一个可行的,无论我尝试什么,都无法从输入中获取文件的详细信息。有其他人遇到这个问题并可以提供帮助吗?即使我尝试使用jQuery获取对象,'files'也出现未定义的情况。
编辑:阅读更多的在线内容,似乎是因为IE直到表单提交后才能访问输入,然而我正在使用Ajax上传文件,所以我不能真正提交它。
编辑2:我还应该提到,这段代码是在文件输入的改变事件上调用的,不确定是否与此有关,请注意。
2个回答

9
在检查IE开发人员工具中的文档模式后,发现由于某种原因它被还原为9,我的主页面上有一个旧的X-UA-Compatible meta标签,我将其更改为:
<meta http-equiv="X-UA-Compatible" content="IE=edge">

并且FormData毫无问题。


1

FormData在IE11上不完全支持。

具体来说:FormData实例没有“set”方法。 您需要使用“append”方法,如下所示:

const formData = new FormData();
formData.append('your_key_name', 'your_value_goes_here');

将meta http-equiv设置为IE=edge不会使“set”属性起作用,也不需要。

Reference: https://developer.mozilla.org/en-US/docs/Web/API/FormData/append


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接