使用 javascript 清除/重置 formData()

新手上路,请多包涵

我在下面使用 formData,并传递结果。但是如果用户不止一次这样做,数据就会重复。所以我必须在添加任何值之前清除/重置 formData。

我可以像 f.name = “ 那样一个一个地做,我有很多钥匙。有没有更好的方法来解决这个问题?

 $('input').change(function(){
// Create a new formdata but at first have to clear/reset it
var fd = new FormData();
var f = $.canvasResize('dataURLtoBlob', data);
f.name = file.name;
fd.append($('#area input').attr('name'), f);
})

原文由 Maria Jane 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

@gurvinder372 的回答不会从您的 FormData 中删除您的密钥,它只会将其设置为一个空字符串,这与服务器端不同。

例如,在 php 中, if ( isset($_POST["yourKey"]) ) 仍将计算为真。


不幸的是,最好的跨浏览器方法是根据您的情况创建一个新的 FormData 对象。

 fd = new FormData();


另一种可能性是使用 formData.set() 方法,尽管目前仅受 Chrome>=50Firefox>=39 支持。

这将替换设置键处的值,或者如果没有这样的键则附加它。

 formData.set('yourKey', yourValue);


现在回答问题的标题,在 Chrome>=50Firefox>=44 中,您可以使用 for .. of formData.keys()delete FormData 对象的方法:

 var formData = new FormData();
formData.append('yourKey', yourValue);

for (var key of formData.keys()) {
    // here you can add filtering conditions
    formData.delete(key)
    });

甚至使用它的 forEach 方法(显然浏览器支持同样差)

 var formData = new FormData();
formData.append('yourKey', yourValue);

formData.forEach(function(val, key, fD){
    // here you can add filtering conditions
    formData.delete(key)
    });

原文由 Kaiido 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏