如何在$POST中从json读取关联数组?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

我正在使用jQuery将json对象发布到我的php应用程序中。

jQuery.post("save.php",JSON.stringify(dataToSend), function(data){ alert(data); });

从萤火虫中拉出的json字符串看起来像这样

{ "data" : [ { "contents" : "This is some content",
        "selector" : "DIV.subhead"
      },
      { "contents" : "some other content",
        "selector" : "LI:nth-child(1) A"
      }
    ],
  "page" : "about_us.php"
}

在PHP中,我试图把它变成一个关联数组。

我的PHP代码到目前为止

<?php
$value = json_decode(stripcslashes($_POST));
echo $value['page'];
?>

对ajax调用的响应应该是“about_us.php”,但它回到空白。

提问于
用户回答回答于

可以避免使用JSON.stringifyjson_decode

jQuery.post("save.php", dataToSend, function(data){ alert(data); });

和:

<?php
echo $_POST['page'];
?>

但如果你真的想使用它们,那么:

jQuery.post("save.php",  {json: JSON.stringify(dataToSend)}, function(data){ alert(data); });

和:

<?php
$value = json_decode($_POST['json']);
echo $value->page;
?>
用户回答回答于

$_POST 如果请求主体不是标准的urlencoded形式,将不会被填充。

相反,从这样的只读php://input流中读取以获取原始请求主体:

$value = json_decode(file_get_contents('php://input'));

扫码关注云+社区