我有一个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,我如何修复这个问题谢谢:))

最佳答案

如果您查看这两个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);
            ?>,

10-04 21:44
查看更多