Javascript 由于对FormData.delete()的支持较低,因此';这种方法的替代方案是什么?或者如何实现相同的行为?
我的网站使用Javascript 由于对FormData.delete()的支持较低,因此';这种方法的替代方案是什么?或者如何实现相同的行为?,javascript,jquery,Javascript,Jquery,我的网站使用FormData.delete()将某些表单字段从表单中排除,然后再将数据发送到服务器。然而,很多浏览器甚至Safari都不支持FormData.delete()。因此,我不得不将方法转换为其他方法,或者以某种方式实现行为 这是当前代码: let formData = new FormData(this) formData.delete('files[]') 要点是从表单数据中删除文件[]。现在我能想到的获得相同结果的替代方法是手动将每个表单字段添加到FormData。但我当然希望
FormData.delete()
将某些表单字段从表单中排除,然后再将数据发送到服务器。然而,很多浏览器甚至Safari都不支持FormData.delete()
。因此,我不得不将方法转换为其他方法,或者以某种方式实现行为
这是当前代码:
let formData = new FormData(this)
formData.delete('files[]')
要点是从
表单数据中删除文件[]
。现在我能想到的获得相同结果的替代方法是手动将每个表单字段添加到FormData
。但我当然希望有更好的方法。任何输入?您可以迭代FormData
对象和.append()
所选元素到新的FormData
对象
var fd=new FormData(document.forms[0]);
var data=new FormData();
var not=“files[]”;
for(让fd的道具){
控制台日志(道具[0],道具[1]);
如果(道具[0]!==非){
数据追加(prop[0],prop[1]);
}
}
for(让数据作为道具){
控制台日志(道具[0],道具[1]);
}
来自guest271314的代码在IE和Edge中不起作用(由for(let prop of fd){引起),我是这样做的
var origData = new FormData(form);
var newData = new FormData();
var exclude = "files[]";
var inputs = form.getElementsByTagName('input');
var inputsList = Array.prototype.slice.call(inputs);
inputsList.forEach(
function (i) {
if (i.name !== exclude) {
newData.append(i.name, i.value);
}
}
);
我也面临同样的问题,并通过几个论坛,但没有找到适当的解决办法
IE/Edge/Safari()中不支持formData.delete
目前唯一的解决方案是在新创建的formData中手动添加键/值,并将其发布到服务器
//This is your actual form data
var formdata = new FormData();
formdata.append("files[]","TestFile");
formdata.append('Key1', "value1");
formdata.append('Key2', "value2");
formdata.append('Key3', "value3");
//This is the new form data
var Newformdata = new FormData();
//Adding the rest of the values which you want to preseve in Newformdata
Newformdata.append('Key1', "value1");
Newformdata.append('Key2', "value2");
Newformdata.append('Key3', "value3");
嗯……在调用新FormData之前,您能将文件字段移出表单吗?在Edge中不工作。出现错误对象不支持属性或方法“Symbol.iterator”