我正在从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编码功能,我看不到在哪里设置或更改对象名称。有什么建议?谢谢!
答案 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);