在Internet Explorer中,formdata.get()方法有哪些替代方案?

7
var formData = new FormData();
formData.append('username', 'Chris');
formData.append('username', 'Bob');
formData.get('username');

在Internet Explorer中,不支持get方法。那么我们该如何检索用户名呢?


这取决于你为什么需要表单数据?最有可能的是,使用一个表单数据 polyfill,例如 https://github.com/moxiecode/moxie/blob/9b77a24f58c72fcd15e955e26c5a745ca08b2575/src/javascript/xhr/FormData.js。 - Ruan Mendes
为什么不使用Ajax调用? - Mihai Alexandru-Ionut
最好使用Ajax调用来提交Ajax上的内容。我发现它比FormData()更好。 - Mihai Alexandru-Ionut
@CBroe 这只是一个示例代码。对我来说情况不同。我需要验证通过formdata发送的文件格式。 - AmudhaVigneshwaran
视图: var bulkUploadFile = $('#bulkImportCSV').files[0]; var data = new FormData(); data.append("bulkupload", bulkUploadFile); uploadBulkAssignments.uploadFile(data, function () { });模型: uploadFile: function(file) { if (file.get("bulkupload").name.split(".")[1] === "csv") {}}这里的file是formdata。我在此验证formdata的文件名。但是,在IE中,get方法无法正常工作。 - AmudhaVigneshwaran
显示剩余4条评论
1个回答

0

你需要自己跟踪添加的值,或者你可以使用这个完整的polyfill来使用所有的方法。

然后,如果你想将它转换为本地代码,你只需要循环遍历条目并将其附加到本地formData中即可。

在IE中,这些都不起作用:

一些选项是entries()、getAll()、keys()、values(),但是因为append是IE唯一能做的事情,所以它们都不起作用...

另一个检索它的选项是使用Array.from(formdata)或更简单的版本[...formdata],但这需要entries(也称为迭代器)。

还有另一种解决方案可以获取所有字段,而没有任何从formData获取它的方法。那就是使用fetch,你可以将formData转换为blob、arrayBuffer或文本。

new Response(formdata).text().then(console.log)

但问题是IE不支持fetch


我认为在缺少 FormData.get 的任何浏览器上,Array.from(FormData) 都无法正常工作。 - 12Me21
@12Me21 不,IE11不支持Array.from。 - Tristan CHARBONNIER

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