繁体   English   中英

检查是否存在formdata对象键

[英]Check if formdata object key exists

是否可以对formdata对象的键进行检查? 我想知道一个密钥是否已经分配了一个值。

尝试了这样的事情,结果不好

data=new FormData();
if(!data.key)
data.append(key,somevalue);

另外一个问题是重写原始值的双重赋值的性质?

事情正在发生变化,现在您可以使用get函数检查密钥是否退出。

原始答案

正如我们在评论中已经讨论的那样,浏览器隐藏了由于安全原因而存储在FormData对象中的数据。 有一种解决方法可以帮助在开发人员控制台中预览其数据,如下所述: FormData.append(“key”,“value”)不起作用

在代码中访问此类数据的唯一方法是使用自己的包装对象,该对象支持附加数据,获取值并转换为FormData 它可能是这样的对象:

function FormDataUnsafe() {
    this.dict = {};
};

FormDataUnsafe.prototype.append = function(key, value) {
    this.dict[key] = value;
};

FormDataUnsafe.prototype.contains = function(key) {
    return this.dict.hasOwnProperty(key);
};

FormDataUnsafe.prototype.getValue = function(key) {
    return this.dict[key];
};

FormDataUnsafe.prototype.valueOf = function() {
    var fd = new FormData();
    for(var key in this.dict) {
        if (this.dict.hasOwnProperty(key))
            fd.append(key, this.dict[key]);
    }

    return fd;
};

FormDataUnsafe.prototype.safe = function() {
    return this.valueOf();
};

用法:

var xhr = new XMLHttpRequest;
xhr.open('POST', '/', true);
xhr.send(data.safe());  // convertion here

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM