无法在 php if 语句中处理 axios.post vuejs 正文数据
Posted
技术标签:
【中文标题】无法在 php if 语句中处理 axios.post vuejs 正文数据【英文标题】:Can't Handle axios.post vuejs body data in php if statement 【发布时间】:2021-04-23 19:44:00 【问题描述】:我尝试使用 axios.post
发送带有一个参数的正文,但无法使用 $requestBody['action']
在 php 中获取正文所以我检查了 chrome 开发工具中的控制台和网络选项卡,发现正文正确设置为data: ""action":"GetOperator""
,但我无法在if()
中处理它,因为if()
正文不会执行,所以我尝试使用var_dump()
检查它返回null
Vuejs 脚本
let actionOrder = new FormData();
actionOrder.append('action', 'GetOperator');
axios.post(BaseUrl + 'core/core.php',actionOrder)
.then((res) =>
console.log(res);
this.loading = false;
)
.catch((error) =>
console.log(error);
);
PHP
$requestBody = file_get_contents('php://input');
$requestBody = json_decode($requestBody, true);
if($requestBody['action'] == 'GetOperator')
echo 'executed';
【问题讨论】:
你到底做了什么 var_dump?您是从file_get_contents('php://input')
实际返回的内容开始 - 还是仅在尝试将其解码为 JSON 后才检查?不要一次做多个步骤,然后只检查最终结果。
@CBroe 我试图执行if()
语句,但我无法执行并尝试使用var_dump($requestBody['action'])
对其进行调试,它返回NULL
您在此处执行 多个 操作,每个操作都可能自行出错(或返回意外结果。)因此调试其中的 每个步骤,而不仅仅是最终结果。首先检查从php://input
读取的实际返回的内容 - 之前 您尝试将此时可能已经不是 JSON 的内容解码为JSON。
@CBroe var_dump(file_get_contents('php://input'));
显示string(0) ""
这意味着浏览器没有为文件发送任何数据,或者 Content-Type HTTP 标头错误。
【参考方案1】:
由于core.php
用于将数据主体发送到axios.post中的文件axios.post(BaseUrl + 'core/core.php',actionOrder)
被包含在header.php
文件中导致的问题,所以core.php
在浏览器和数据中加载了两次丢了。
所以我将if()
和其他操作移到了一个单独的php 文件中,该文件不包含在标题中,以防止任何直接访问并解决了问题。
【讨论】:
以上是关于无法在 php if 语句中处理 axios.post vuejs 正文数据的主要内容,如果未能解决你的问题,请参考以下文章