4

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

而($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", 函数(数据)

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

我计划在循环内访问 myMarkers 数组中的数据,使用如下语句:

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

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

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

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

4

3 回答 3

5

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

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

x部分不包括在内,因为这只是对象的名称。如果你想jmarkers包含你的文本,它必须是你要编码的数据结构的一部分:

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

但这一切只是无缘无故地为您的数据结构添加了另一层。

于 2012-07-16T16:10:20.270 回答
3

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

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

于 2012-07-16T16:08:30.400 回答
1

你……不要。整个事物是一个对象。您只需要引用其中的元素。

alert(myMarkers.id);
于 2012-07-16T16:09:02.473 回答