我需要在表单数据中使用布尔值。例如:
let example = new FormData();
example.append('aBoolean', true);
这会引发错误,因为上面的“ true”必须采用字符串形式。您知道我可以在FormData中使用布尔值的方法吗?另外,当我通过以下方式获得值时,甚至可以将其转换为布尔值:
example.get("aBoolean")
假设在上述示例中,我确实将true存储为字符串。
答案 0 :(得分:1)
不能将布尔值设置为FormData
append方法。仅允许数据类型为USVString,Blob
。
从mdn文档中了解有关此内容的更多信息
https://developer.mozilla.org/en-US/docs/Web/API/FormData/append
答案 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 }));
const parsedData = JSON.parse(req.body.data);
console.log(parsedData.myBool === false); // => true