【问题标题】:FormData in IE 11 not definedIE 11 中的 FormData 未定义
【发布时间】:2014-10-05 18:57:37
【问题描述】:

我有以下脚本从输入类型的文件中获取文件数据:

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 来获取对象,但由于某种原因,“文件”是未定义的。

编辑:在线阅读更多内容,这似乎是因为 IE 在提交表单之前无法访问输入,但是我使用 ajax 上传文件,所以我无法真正提交。

EDIT2:我还应该提一下,这段代码是在文件输入的更改事件上调用的,不确定它是否有任何相关性,但最好提一下

【问题讨论】:

    标签: jquery internet-explorer form-data


    【解决方案1】:

    在 IE 开发人员工具中检查 docmode 后发现它由于某种原因被恢复为 9,在我的母版页上有一个旧的 X-UA-Compatible 元标记,我将其更改为:

    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    

    FormData 完全没有问题。

    【讨论】:

      【解决方案2】:

      IE11 不完全支持 FormData。

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

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

      将 meta http-equiv 设置为 IE=edge 不会使 'set' 属性起作用并且不需要。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-07
        相关资源
        最近更新 更多