如何在 Axios 发布请求中为布尔值设置 formData

时间:2021-06-06 22:50:04

标签: api vue.js axios

我正在尝试使用 axios 向我的后端发送发布请求,但由于某种原因我无法发送布尔值“isActive”。有没有办法做到这一点?

async submit() {
    const isValid = await this.$validator.validateAll()
    if (isValid && !this.submitting) {
        let formData = new FormData();
        formData.set("city", this.formData.city)
        formData.set("state", this.formData.state)
        formData.set("county", this.formData.county)
        formData.set("isActive", true) // <- NOT ACCEPTING THIS VALUE

        axios.post("/api/v1/team/createTeam", formData, {
            headers: {
                'Content-Type': 'application/json'
            }
        })
            .then(res => {
                if (res.status === 200) {
                    this.submitting = true
                    this.cancelModal()
                } else {
                    console.log(res.data.code);
                }
            })
            .catch(function (err) {
                console.log(err);
            })
        }
}

1 个答案:

答案 0 :(得分:0)

FormData 只能包含字符串值。设置布尔值 tmp[0] 将导致值 true。后端必须将该字符串转换为布尔值。

此外,您的标头不应是 "true"(用于 JSON 有效负载)。如果发送 application/json 作为有效负载,则标头应为 FormData:

multipart/form-data

如果您的后端实际上需要 JSON,则您无法发送 axios.post("/api/v1/team/createTeam", formData, { headers: { 'Content-Type': 'multipart/form-data' } }) 。改为切换到 JavaScript 对象(它接受布尔值):

FormData