php接收不到前端POST过来的json数据!!!

问题:最近在开发微信小程序,后端是用PHP写的,但是我页面提交过去的Json数据,php页面接收不到,很奇怪!
下面前端代码截图:

clipboard.png

clipboard.png

clipboard.png

后台php代码:

<?php
    $val = $_POST['val'];
    var_dump($val);
?>

为什么这种格式的数据 php收不到,我应该用什么方法解决,求各路大神赐教!

阅读 9.9k
7 个回答

通过表单提交的数据是form-data形式的,形如a=b&c=d,可以通过$_POST变量读取。
而你的问题中,浏览器传来的是raw形式的数据,整个就是个编码的JSON,所以$_POST是取不到值的,只能通过php://input拿到原始输入:

$raw = file_get_contents('php://input');
$data = json_decode($raw, true);

拿到原始输入还是个编码的JSON,所以需要json_decode解码,解码完就可以用了

你是按表单的方式接收,但是提交的不是表单形式的数据

前端提交数据是以'Request Payload'类型,后端用$_POST接收肯定是空的。如果你想后端用$_POST接收,你前端要以'Form Data'提交。

file_get_contents("php://input"); 因为客户端没有把数据注入到全局变量内. 微信支付等腾讯系的回调经常会遇到的问题. 这个写法比较节省内存.

转换为字符串再提交 序列化一下

value加引号试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏