来自React的HTTP Post请求(使用axios)

vq8itlhq  于 2022-11-05  发布在  iOS
关注(0)|答案(1)|浏览(270)

我使用Axios库向服务器发送发布请求时遇到问题。
我面临的问题是,我需要发送几个包含JSON数据的变量。我将它们作为参数发送,然后收到一个错误:Malformed HTTP request .
当我将它们作为表单数据发送时,我无法在运行Laravel的服务器上解码它们。在我的服务器上,类型显示为[object Object]
下面是我的代码:

http.js
export default axios.create({
    baseURL: "http://127.0.0.1:8000/api/",
    headers: {
        "Content-type": "application/octet-stream",
        "Authorization": "Bearer XXX"
    },
})
Controller.js
let formData = new FormData()

formData.append("smartBUOY", this.state.smartBUOY)
formData.append("smartQUMATIK", this.state.smartQUMATIK)

http.post(
    "generate/downloadReport",
    formData,
    {
        headers: {
            "Content-Type": "multipart/form-data"
        },
        responseType: 'blob',
        processData: false,
    }
)
    .then(response => {
        this.setState({
            downloadLoading: false
        })
    })

在我运行Laravel的服务器上,我做:

$data = $request->get("smartBUOY");

$json_data = json_decode($data, true);

我得到了一个null值,正如我前面提到的,当我检查$data的类型时,它显示为[object Object]
在发送数据之前,我尝试使用以下命令将数据显式转换为Json格式:

const jsonQUMATIK = JSON.stringify(this.state.smartQUMATIK)

还有

const jsonQUMATIK = JSON.parse(this.state.smartQUMATIK)

但我仍然在服务器上以相同的[object Object]获得数据,我不知道如何获得我发送的原始数据。
谢谢你

3df52oht

3df52oht1#

我需要在发送数据之前对其进行序列化。这对我很有效:

const jsonQUMATIK = serialize(this.state.smartQUMATIK)
const jsonBUOY = serialize(this.state.smartBUOY)
formData.append("smartQUMATIK",jsonQUMATIK)
formData.append("smartBUOY",jsonBUOY)

在服务器上,我可以对它进行json_decode。

相关问题