在PHP中为JSON对象分配标识符/名称

时间:2012-07-16 16:06:16

标签: php javascript jquery json

我正在从mysql数据库中获取数据并使用PHP编码JSON对象以在JS中使用。 在PHP端,我做了这个

while($ row = mysql_fetch_array($ result))

{
     $jmarkers = array(
        'id'=> $row['id'],
                'lat' => $row['lat'],
                'lng' => $row['lng'],
         etc...            
    );
    array_push($json, $jmarkers);
}

$jsonstring = json_encode($json);
echo $jsonstring;

我可以使用jQuery访问JS中的数据,并创建了一个数组来保存JSON数据:

$。getJSON(“getjson.php”,function(data)

{
     myMarkers = data;
     console.log(myMarkers);
});

我打算在内部循环中访问myMarkers数组中的数据,语句如下:

var tempLat = myMarkers.jmarkers [i] .lat;

问题是我的JSON对象没有被称为jmarkers或其他任何东西,当我将它们打印到控制台时,它们具有这个通用名称“Object”:

对象{id =“2”,lat =“40.6512”,lng =“ - 73.9691”,更多...},

所以我不确定如何在我的JS数组中指出它们。我看了PHP JSON编码功能,我看不到在哪里设置或更改对象名称。有什么建议?谢谢!

3 个答案:

答案 0 :(得分:5)

这是可以预料的。 JSON本质上是赋值操作的右侧:

var x = {'foo':'bar'};
        ^^^^^^^^^^^^^---- JSON

不包括x部分,因为那只是对象的名称。如果您希望包含jmarkers文字,则必须将其作为您要编码的数据结构的一部分:

$arr = array(
   'jmarkers' => array(...your data here...);
);

但所有这一切都是为数据结构添加另一层,没有任何理由。

答案 1 :(得分:3)

$jmarkers只是PHP端的JSON对象标识符。传递时,它会将数组值转换为JSON编码的字符串,因此会丢失标识符。

目前,在您的PHP代码中,array_push($json, $jmarkers)正在向您当前的$json数组附加一个数组。因此,您实例化了一个二维数组,该数组无法通过Javascript代码中的jmarkers标识符进行检索。只需使用myMarkers[i]检索数据。

答案 2 :(得分:1)

你......不。 整个事物是一个对象。您只需要参考其中的元素。

alert(myMarkers.id);