我在下面使用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);
})
6条答案
按热度按时间gj3fmq9x1#
@gurvinder372的答案不会从FormData中删除您的密钥,它只会将其设置为空字符串,这不是同一个服务器端。
例如,在php中,
if ( isset($_POST["yourKey"]) )
仍然会计算为true。不幸的是,最好的跨浏览器方法是在您的情况下创建一个新的FormData对象。
另一种可能性是使用
formData.set()
方法,尽管目前只有 Chrome〉=50 和 Firefox〉=39 支持。这将替换设置键处的值,或者如果没有这样的键,则附加它。
现在来回答问题的标题,在 Chrome〉=50 和 Firefox〉=44 中,您可以使用FormData Object的
for .. of formData.keys()
和delete
方法:或者甚至使用它的
forEach
方法(显然浏览器支持同样糟糕)ntjbwcob2#
也可以通过执行以下操作清除FormData
使用enteries和delete方法的另一种方法
wydwbb8l3#
删除迭代器(= formData.keys())外的每个键,如下所示。
niknxzdl4#
试试这个FormData.prototype扩展
xiozqbni5#
f5emj3cl6#
这些旧帖子的方式只是停留在没有帮助任何人...要清除表单,只需调用reset方法。