You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过XMLHttpRequest向PHP传递文本常量,请求排查问题

问题解决:XMLHttpRequest POST数据无法被PHP的$_POST获取

问题原因

你没有设置Content-Type请求头,PHP默认只会解析application/x-www-form-urlencoded类型的POST数据到$_POST数组中,未指定头的情况下,XHR发送的字符串数据不会被PHP正确解析。

修改后的JavaScript代码

<!DOCTYPE html> 
<html lang="en">
    <button type="button" id="saveButton">Save Button</button>
    <script> 
        document.getElementById('saveButton').addEventListener('click', function() {
            var inst_a = new XMLHttpRequest(); 
            inst_a.open("POST", "check_name-indev02.php");
            // 添加Content-Type请求头,告诉PHP数据格式
            inst_a.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            inst_a.send("inputname=dummy");

            inst_a.onreadystatechange = function() { 
                if (inst_a.readyState == 4 && inst_a.status == 200) {
                    console.log(inst_a.responseText);
                }       
            }
        });
    </script>
</html>

额外排查验证(可选)

如果仍有问题,可以在PHP中添加以下代码,确认是否收到原始数据:

<?php
// 打印原始POST数据流
echo file_get_contents('php://input');
// 同时判断$_POST状态
if (isset($_POST['inputname'])) {
    echo " | set";
} else {
    echo " | not set";
}
?>

如果能看到inputname=dummy,说明数据已发送,只是PHP未解析到$_POST,确认是请求头问题;如果看不到,说明请求路径错误或数据未发送。

其他注意点

  • 确保check_name-indev02.php的相对路径与当前HTML页面匹配
  • 检查服务器是否有特殊配置(如URL重写规则)干扰了请求

内容的提问来源于stack exchange,提问作者user3467434

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 14:48:19