我使用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);
然而所有这些都给了我一个空数组。有什么帮助吗?
答案 0 :(得分:0)
我认为您发送的数据不正确,
使用,
req.send("name=James");
答案 1 :(得分:0)
$_POST
仅填充表单编码和多部分编码数据。您的数据已编码为JSON,应通过php://input
访问(根据this question)。
$data
应包含JSON。如果它没有,则可能是由于您未能设置请求的Content-Type标头。
req.setRequestHeader("Content-Type", "application/json");
答案 2 :(得分:0)
除了行req.setRequestHeader("Content-Type", "application/json");
应位于req.open("POST", 'functions.php', true);
之外,因为必须打开XHR对象的状态才能设置标题,因此您的代码完全正常运行。
你的问题出在其他地方。
ini_set("allow_url_fopen", true);
file_get_contents('php://input');
检查php.ini的解释参数的最佳方法是使用<?php phpinfo(); ?>
执行空的.php文件并启动它;然后查看&#34;核心&#34;部分。