我有一个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);
?>,