无法在 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 正文数据的主要内容,如果未能解决你的问题,请参考以下文章

在 if/else PHP 语句中使用 'and' 和 'or'

PHP 语句 函数 字符串处理

PHP:在if语句中分配多个变量

php SQL语句有and也有or应该怎么处理呢?

is_null 函数在我的 if 语句中无法正常工作

使用 php 我在 foreach 中遇到 if elseif else 语句有问题