【问题标题】:Assigning identifier/name to JSON object in PHP在 PHP 中为 JSON 对象分配标识符/名称
【发布时间】:2012-07-15 12:41:10
【问题描述】:

我正在从 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", 函数(数据)

{
     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 编码函数,但看不到在哪里设置或更改对象名称。有什么建议?谢谢!

【问题讨论】:

    标签: php javascript jquery json


    【解决方案1】:

    这是意料之中的。 JSON 本质上是赋值操作的右侧:

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

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

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

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

    【讨论】:

    • 实际上,将数据放在较低层会非常有帮助。它允许您在响应中添加顶级属性,例如错误、异常等。它还允许您在响应中添加更多类型的数据,即除了 jmarkers 之外的 qmarkers。
    【解决方案2】:

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

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

    【讨论】:

    • 好的,很高兴知道。那么如何更改对我的数组的调用结构以获取 myMarkers 数据? var tempLat = myMarkers.jmarkers[i].lat 不起作用,我需要某种方式来引用 JSON 对象...
    • 看起来 $json 只被推送一次(只有一个数组)。试试 myMarkers.id、myMarkers.lat 等。
    【解决方案3】:

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

    alert(myMarkers.id);
    

    【讨论】:

    • 当有人因为树木而看不到森林时.. +1 来自我 :)
    猜你喜欢
    • 2015-04-28
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多