Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 由于对FormData.delete()的支持较低,因此';这种方法的替代方案是什么?或者如何实现相同的行为?_Javascript_Jquery - Fatal编程技术网

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”