отображение данных JSON из PHP JSON_encode? - PullRequest
1 голос
/ 31 марта 2011

У меня есть этот код 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 следующим образом:

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, как я могу это исправить благодаря:))

Ответы [ 2 ]

3 голосов
/ 31 марта 2011

Если вы посмотрите на два вывода 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);
            ?>,
2 голосов
/ 31 марта 2011

Ваша переменная prePopulate - это массив, содержащий массив объектов, но вы просто хотите, чтобы он был массивом объектов.

Вы можете снять скобки [и] до и после блока PHP, или повторить это в своем блоке PHP: array_pop(json_decode($responses))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...