我使用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]
获得数据,我不知道如何获得我发送的原始数据。
谢谢你
1条答案
按热度按时间3df52oht1#
我需要在发送数据之前对其进行序列化。这对我很有效:
在服务器上,我可以对它进行json_decode。