无法通过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
相关产品推荐
相关产品推荐

