我在下面使用 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 许可协议
@gurvinder372 的回答不会从您的 FormData 中删除您的密钥,它只会将其设置为一个空字符串,这与服务器端不同。
例如,在 php 中,
if ( isset($_POST["yourKey"]) )
仍将计算为真。不幸的是,最好的跨浏览器方法是根据您的情况创建一个新的 FormData 对象。
另一种可能性是使用
formData.set()
方法,尽管目前仅受 Chrome>=50 和 Firefox>=39 支持。这将替换设置键处的值,或者如果没有这样的键则附加它。
现在回答问题的标题,在 Chrome>=50 和 Firefox>=44 中,您可以使用
for .. of formData.keys()
和delete
FormData 对象的方法:甚至使用它的
forEach
方法(显然浏览器支持同样差)