$_POST变量为空
$_POST variable is empty
我使用json在Javascript中创建了一个ajax请求,但$_POST变量为空。
var userid = "james";
var score = 200;
var jsondata = {
userid: userid,
score: score
};
data = JSON.stringify(jsondata);
req = new XMLHttpRequest();
req.setRequestHeader("Content-Type", "application/json");
req.open("POST", 'functions.php', true);
req.send(data);
我的functions.php文件如下所示:
print "CONTENT_TYPE: " . $_SERVER['CONTENT_TYPE'] . "<BR />";
$data = file_get_contents('php://input');
print "DATA: <pre>";
var_dump($data);
var_dump($_POST);
var_dump($_GET);
然而,所有这些都给了我一个空数组。有什么需要帮忙的吗?
我认为您发送的数据不正确,
使用,
req.send("name=James");
$_POST
仅用于表单编码和多部分编码的数据。您的数据被编码为JSON,应该通过php://input
访问(根据这个问题)。
$data
应该包含JSON。如果没有,则可能是由于您未能设置请求的Content-Type标头。
req.setRequestHeader("Content-Type", "application/json");
除了req.setRequestHeader("Content-Type", "application/json");
行应该在req.open("POST", 'functions.php', true);
下,因为XHR对象的状态必须是打开的才能设置标头,您的代码完全可以操作。
你的问题在其他地方。
- 如何检查php显示的内容
- 你的ini conf.合适吗?尝试在
file_get_contents('php://input');
之前执行ini_set("allow_url_fopen", true);
- 检查php.ini中的参数post_max_size。它应该是8M或10M(没有MB,但只有M,或者php会将其插入为0)
检查php.ini的解释参数的最好方法是用<?php phpinfo(); ?>
创建一个空的.php文件并启动它;然后检查"核心"部分。
相关文章:
- PHP/Ajax/jquery/JON-在Ajax Post之后将echo文本中的一部分作为变量返回
- 正在拆分AJAX POST变量
- 组合多个变量-使用POST
- 使用javascript在post请求中传递用户输入变量
- Jquery Post Empty即使发送变量有数据
- 当我想发布一个变量但有 1 个 js 时,ajax post 的解决方案是什么
- 如何将 POST 变量添加并保存到 Qualtrics
- 从返回的数据 ajax post 创建一个变量
- PHP post-id无法使用Javascript变量作为id
- 通过POST将JavaScript变量发送到PHP
- 从一个函数传递到另一个函数的变量在使用jQuery的.post之后变得未定义
- 两个Post请求,并且不更改变量
- Ajax jquery post发布时没有变量名
- 在引导文件输入中通过post发送一个额外的变量
- jquery.post和变量作用域
- 我使用jQuery发布的表单不发送POST变量
- Firefox插件-在提交之前捕获post变量[no-enctype]
- 将带有POST的Ajax变量发送到PHP
- 使用ajax将会话变量POST到关系数据库
- 在PHP中使用全局变量POST来接收java脚本变量