尝试在php中读取已发布的json数据时出错

时间:2014-08-22 08:56:42

标签: php json

我有以下问题。当我试图读取从html页面发布的一些json数据时,我面临以下错误“试图获取非对象的属性”。

用于创建json的Jquery脚本

var json = {"data":[]};

json.data.push({serialNumber: $serialNumber, xreosi: $xreosiToPost,
forma: $forma, apolia: $apolia});

发布到php的Jquery

$.post("page.php",{jsonData: JSON.stringify(json),
customer: $("#cusID").val()},function(data){});

PHP文件

  $json = json_decode($_POST['jsonData']);
  foreach($json as $value){
    $serialNumber = $value->serialNumber;
    echo $serialNumber;
  }

提前致谢。

2 个答案:

答案 0 :(得分:1)

此后:

var json = {"data":[]};

json.data.push({serialNumber: $serialNumber, xreosi: $xreosiToPost,
forma: $forma, apolia: $apolia});

你有:  Object [data] [0] = array('serialNumber'=> ...);

需要:

$json = json_decode($_POST['jsonData'][0]); 

$json = json_decode($_POST['jsonData']);

foreach($json as $row){
  foreach($row as $value) {
    $serialNumber = $value->serialNumber;
    echo $serialNumber;
  }
}

答案 1 :(得分:0)

没有第二个参数的

json_decode将结果作为php对象返回。您必须将true作为第二个参数传递。此外,您的数据位于$json['data'],而不是$json

$json = json_decode($_POST['jsonData'], true);
foreach($json['data'] as $value) {
    $serialNumber = $value->serialNumber;
    echo $serialNumber;
}