提问人:Merlin the Immortal 提问时间:9/19/2023 更新时间:9/19/2023 访问量:25
$_POST 为空,而请求有效负载显示数据,XMLHttpRequest [重复]
$_POST is empty while Request Payload shows data, XMLHttpRequest [duplicate]
问:
祝你今天开心!
我正在使用 JavaScript 函数通过 post 方法调用自制的 php 页面,但该变量仍为空。$_POST
我是PHP世界的新手,我的问题可能有点傻,但是我已经尝试调试了48小时,并且在浏览那里时,那里有很多类似的问题,但都没有解决我的问题。
代码非常复杂,但我简化了代码来调试问题,但它仍然发生。
JS 函数
function save() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "gameapi.php/", true);
xhr.setRequestHeader('Accept', 'application/json',);
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
xhr.send(JSON.stringify({
'saving': 1
}));
xhr.onload = function() {
console.log(this.responseText);
}
}
游戏API.php
<?php
echo var_dump($_POST);
?>
正如你肯定猜到的那样,这不是原始代码,并且是简化的,但响应仍然是一个空数组。
我也尝试过没有 RequestHeaders 的代码。
我期待包含,但它是一个空数组。$_POST['saving']
1
$_POST
此外,在 Inspect 的“网络”选项卡中,请求已成功发送,我非常确定 url 或任何内容都是正确的。
Inspect->Network->Payload:
{saving: 1}
saving:1
Inspect->Network->响应:
<pre class='xdebug-var-dump' dir='ltr'>
<small>F:\www\matches\gameapi.php:3:</small>
<b>array</b> <i>(size=0)</i>
<i><font color='#888a85'>empty</font></i>
</pre>
我正在使用 Firefox 和本地主机
答:
在请求中使用 application/x-www-form-urlencoded 或 multipart/form-data 作为 HTTP Content-Type 时,通过 HTTP POST 方法传递给当前脚本的变量的关联数组。
在你的例子 () 中,你不会收到一个关联数组。application/json
您可以尝试改用:php://input
php://input 是一个只读流,允许您从请求正文中读取原始数据。如果启用了 enctype=“multipart/form-data” 选项,则 php://input 在 enctype=“multipart/form-data” 的 POST 请求中不可用enable_post_data_reading。
$data = json_decode(file_get_contents('php://input'), true);
var_dump($data);
评论