[英]jquery $.post and php $_POST
我正在尝试使用jquery将数据传递给php。 我正在使用javascript获取数据。
jQuery的:
$.post("export.php", JSON.stringify(result)); //result is an array of object
当我在chrome上使用调试器时,我可以在表单数据中看到如下内容:[{“ id”:“ foo”,“ x”:0,“ y”:1,“ z”:8,“ t” :3}]:
但是当我试图用php检索它时,它不起作用:
echo 'Before decode ';
$array=$_POST['data'];
echo 'After decode ';
echo $array;
而且它只是在呼应:解码之前解码之后
我想念什么? (我知道我应该解码数据以返回php中的数组,但是我简化了它以查看问题出处)
如果要发送编码的JSON字符串并通过$_POST['data']
访问它,则需要将结果包装在包含关键data
的对象中:
$.post("export.php", {data: JSON.stringify(result)});
然后,您可以在服务器中像这样解码它:
echo 'Before decode ';
$array = json_decode($_POST['data']);
echo 'After decode ';
print_r($array);
尝试将您的json发布到data
变量中,那么您将在export.php
上获得$_POST['data']
$.post("export.php", {data : result});
或者您可以使用file_get_contents()
获取不带变量的已发布数据
$data = file_get_contents('php://input');
并将其解码json_decode()
通常,您甚至不必将数据转换为JSON:
$.post("export.php", { data: result });
或者,您必须从输入流中钓出JSON编码的主体,即:
$array = json_decode(file_get_contents('php://input'), true);
如果请求正文的内容类型未广告为application/x-www-form-urlencoded
则通常会发生这种情况。
当您发布原始JSON数据时,PHP不知道如何对其进行解码,并且不会填充$_POST
。 您必须自己解析。 未经测试,但请尝试以下操作:
print_r(
json_decode(
file_get_contents('php://input')
)
);
请注意,由于您要发布JSON,因此我强烈建议您改用$.ajax
以便您可以设置contentType: 'application/json'
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.