我有这个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"
输入我得到未定义,我认为它因为没有回应json的推进,我怎么能解决这个问题谢谢:))
答案 0 :(得分:3)
如果查看两个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);
?>,
答案 1 :(得分:2)
你的prePopulate变量是一个包含一个对象数组的数组,但你只想让它成为一个对象数组。
您可以在PHP块之前和之后取下[和]括号,或者在PHP块中回显:array_pop(json_decode($responses))