Mar*_*ane 4 html javascript jquery html5
我在下面使用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);
})
Run Code Online (Sandbox Code Playgroud)
@ gurvinder372的答案不会从FormData中删除您的密钥,它只会将其设置为空字符串,这与服务器端不同。
例如,在php中,if ( isset($_POST["yourKey"]) )仍将评估为true。
不幸的是,最好的跨浏览器方式是根据您的情况创建一个新的FormData对象。
fd = new FormData();
Run Code Online (Sandbox Code Playgroud)
尽管目前仅Chrome> = 50和Firefox> = 39支持,另一种可能性是使用该formData.set()方法。
这将替换set键上的值,如果没有该键,则将其附加。
formData.set('yourKey', yourValue);
Run Code Online (Sandbox Code Playgroud)
现在在Chrome> = 50和Firefox> = 44中回答问题的标题,您可以使用FormData对象的for .. of formData.keys()和delete方法:
var formData = new FormData();
formData.append('yourKey', yourValue);
for (var key of formData.keys()) {
// here you can add filtering conditions
formData.delete(key)
});
Run Code Online (Sandbox Code Playgroud)
甚至使用其forEach方法(显然具有相同的不良浏览器支持)
var formData = new FormData();
formData.append('yourKey', yourValue);
formData.forEach(function(val, key, fD){
// here you can add filtering conditions
formData.delete(key)
});
Run Code Online (Sandbox Code Playgroud)
或者您可以通过执行以下操作来清除FormData
function clearFormData( fd )
{
for( var prop in fd )
{
if ( typeof fd[ prop ] != "function" )
{
fd[ prop ] = "";
}
}
}
Run Code Online (Sandbox Code Playgroud)
var entries = formData.entries();
for(var pair of entries )
{
formData.delete( pair[0] );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8947 次 |
| 最近记录: |