FormData布尔字段?

时间:2018-11-08 16:14:53

标签: javascript angular typescript form-data

我需要在表单数据中使用布尔值。例如:

let example = new FormData();
example.append('aBoolean', true);

这会引发错误,因为上面的“ true”必须采用字符串形式。您知道我可以在FormData中使用布尔值的方法吗?另外,当我通过以下方式获得值时,甚至可以将其转换为布尔值:

example.get("aBoolean")

假设在上述示例中,我确实将true存储为字符串。

3 个答案:

答案 0 :(得分:1)

不能将布尔值设置为FormData append方法。仅允许数据类型为USVString,Blob

从mdn文档中了解有关此内容的更多信息

https://developer.mozilla.org/en-US/docs/Web/API/FormData/append

https://developer.mozilla.org/en-US/docs/Web/API/USVString

答案 1 :(得分:1)

我相信append或set的第二个参数需要字符串或Blob,而不是布尔值。

无论您使用此方法什么,我都只会使用getter和setter将formData结果转换为boolean。即:

get aBoolean() {
    return this.formDataExample.get('aBoolean') === 'true' ? true : false; 
}

set aBoolean(val: boolean) {
   valAsString = val ? 'true' : 'false';
   this.formDataExample.set('aBoolean', valAsString); 
}

然后访问像普通变量一样的布尔值

console.log(this.aBoolean);
this.aBoolean = false; // This goes through the setter

使用枚举会比仅'true'或'false'更好

答案 2 :(得分:0)

另一种解决方案是:

前端

const formData = new FormData();
formData.append('data', JSON.stringify({ myBool: false, myNumber: 8 }));

后端(nodeJs)

const parsedData = JSON.parse(req.body.data);
console.log(parsedData.myBool === false); // => true