【问题标题】:displaying json data from php json_encode?显示来自 php json_encode 的 json 数据?
【发布时间】:2011-03-31 16:15:04
【问题描述】:

我有这个弹出输入选择器的 jquery 代码,它应该显示如下:

$("#demo-input-pre-populated").tokenInput("http://shell.loopj.com/", {
                prePopulate: [
                    {id: 123, name: "Slurms MacKenzie"},
                    {id: 555, name: "Bob Hoskins"},
                    {id: 9000, name: "Kriss Akabusi"}
                ]
            });

当我尝试使用 php 从数据库中获取 vales 时:

prePopulate: [
                    <?
                   $responses = array();
                    $topicJSON=getQtopics($getQ);
                    while($row = mysql_fetch_array($topicJSON)){
                    $response = array(
                        'id' => $row['id'],
                        'name' => $row['name']

                    );
                    $responses[] = $response;
                }
                echo json_encode($responses);
 ?>
        ],

这样显示 json 数据:

 prePopulate: [
         [{"id":"1","name":"Dormitree"},
         {"id":"1482","name":"carriage of goods"}]        
        ],

但是在#demo-input-pre-populated" 输入上我得到了未定义,我认为它的 php 没有回显 json propelrly,我该如何解决这个问题:))

【问题讨论】:

    标签: php jquery mysql json


    【解决方案1】:

    如果您查看两个 JS 输出,唯一的区别是在您从 PHP 输出的情况下,您有两个额外的封闭方括号 [] - 所以您在其中创建了一个 JSON 对象数组情况,而您只需要一个 JSON 对象数组。

    prePopulate 去掉封闭的[],因为json_encode 已经在为你这样做了:

    prePopulate: <?
                    $responses = array();
                    $topicJSON=getQtopics($getQ);
                    while($row = mysql_fetch_array($topicJSON)){
                            $response = array(
                           'id' => $row['id'],
                           'name' => $row['name']
                        );
                        $responses[] = $response;
                    }
                    echo json_encode($responses);
                ?>,
    

    【讨论】:

    • 我能再问你一个问题吗,如果你明白我的意思,我能否在点击操作后使用 jquery 刷新 prePoplaute,即$(".button").click ( //refresh prePoplaute :))
    • @pingpong - 插件看起来不支持这个,你可以与作者核实或提出功能请求。如果您查看源代码,insert_token() 函数会插入新标记,但我对 JavaScript 不够精通,无法弄清楚如何(如果可能)获取对该函数的引用并使用新值调用它。
    【解决方案2】:

    您的 prePopulate 变量是一个包含对象数组的数组,但您只希望它是一个对象数组。

    你可以去掉 PHP 块前后的 [ 和 ] 括号,或者在你的 PHP 块中回显:array_pop(json_decode($responses))

    【讨论】:

      猜你喜欢
      • 2013-03-21
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多