代码之家  ›  专栏  ›  技术社区  ›  Oblivion

FormData布尔字段?

  •  0
  • Oblivion  · 技术社区  · 6 年前

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

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

    这将引发和错误,因为上面的“true”必须是字符串形式。你知道在formdata中使用booleans的方法吗?或者,当我通过以下方式获取值时,甚至可以将其转换为布尔值:

    example.get("aBoolean")
    

    假设我在上面的示例中将true存储为字符串。

    2 回复  |  直到 6 年前
        1
  •  1
  •   front_end_dev    6 年前

    你不能把布尔值设置为 FormData 追加方法。仅允许数据类型为 USVString,Blob .

    从MDN文档中了解有关它的更多信息

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

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

        2
  •  1
  •   Pezetter    6 年前

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

    无论您在哪里使用它,我都只使用getter和setter将formdata结果转换为boolean。IE:

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

    然后访问aboolean,就像它是一个正常变量一样

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

    使用枚举比仅使用“true”或“false”要好