在PHP中解析JSON_Decoded数组

时间:2016-06-28 03:02:39

标签: javascript php json ajax

我将数据传递给一个已经'json_stringified'的ajax调用。我能够将数据传递给PHP,但是当尝试访问传递的数组中的项目时,我收到以下错误:

'试图获取非对象的属性'

我尝试了几件事,但我被困住了。有人可以帮忙吗?我的代码如下:

JS:

    $.ajax({
        url: 'http://localhost/VibeSetter/services/getlocationsFavs.php',
        dataType: 'json',
        type: "POST",               
        data: {favs: JSON.stringify(localStorage.getArray("myFavs"))},
        success: function(data, status)
        {
            $.each(data, function(i,item)
            { 
                //pass to function to fill array
                      populateLocationsArray(i+1, item.idlocations,item.name,item.longitude, item.latitude);

            });
        },

         error: function(jqXHR, textStatus, errorThrown)
        {
            console.log(arguments);
        //  alert('HTTP Error: '+errorThrown+' | Error     Message:'+textStatus);

        }
    });

}

console.log(localStorage.getArray(“myFavs”))返回:

{locations:1},{locations:0},{locations:4293315}

PHP:

<?php
  header('Content-type: application/json');

  include 'config.php';
  $data = json_decode($_POST['favs']);
  var_dump($data);

  foreach($data as $d)
  {
      print $d->locations;
  }

  ?>

在Chrome开发人员工具窗格中返回以下内容:

array(3) {
  [0]=>
  string(14) "{locations: 1}"
  [1]=>
  string(14) "{locations: 0}"
  [2]=>
  string(20) "{locations: 4293315}"
  }


注意:尝试在 10 <上的 C:\ xampp \ htdocs \ VibeSetter \ services \ getlocationsFavs.php 中获取非对象的属性登记/>
注意:尝试在 10 <上的 C:\ xampp \ htdocs \ VibeSetter \ services \ getlocationsFavs.php 中获取非对象的属性登记/>
注意:尝试在 10 <上的 C:\ xampp \ htdocs \ VibeSetter \ services \ getlocationsFavs.php 中获取非对象的属性BR />

有人可以告诉我如何访问此阵列的每个元素吗?我们的想法是解析每个“位置”值,并在查询中进一步将查询中的位置连接为查询搜索中的特定值。

提前致谢

1 个答案:

答案 0 :(得分:0)

考虑$_POST['favs']的值为'[{"locations": "1"},{"locations": "0"},{"locations": "4293315"}]';

然后,

$array = json_decode($_POST['favs'],TRUE);
foreach($array as $d)
{
    print $d['locations'];
}

当为TRUE时,返回的对象将被转换为关联数组。

<强> Reference