繁体   English   中英

jQuery $ .post和php $ _POST

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM