我正在尝试将Typeahead.js实施到我的网站。
typeahead.js将从一个返回JSON的远程页面中获取,
类似于:http://example.org/search?q=%QUERY
对于我的网站,这就是我为PHP编写的内容:
$q=mysql_real_escape_string($_GET['q']);
$getship= @mysql_query('SELECT * FROM `tbl` WHERE data1 LIKE \'%'.$q.'%\' OR schar LIKE \'%'.$q.'%\';');
while($tbl=mysql_fetch_array($getship)){
$id=$tbl['id'];
$data1=$tbl['data1'];
$fplod=explode(" ",$data1);
$data2=$tbl['data2'];
$splod=explode(" ",$data2);
$data3=$tbl['data3'];
$data4=$tbl['data4'];
echo '{
"value":'.$id.',
"tokens":["'.$fplod[0].'","'.$fplod[1].'","'.$splod[0].'","'.$splod[1].'"],
"data1" :"'.$data1.'",
"data2":"'.$data2.'",
"data3":"'.$data3.'",
"data4":"'.$data4.'"
}';
}
但是当我要求返回类型的东西时,它似乎返回text / html而不是application / json 。
我该如何使其发挥作用?
提前致谢
答案 0 :(得分:2)
您可以自己设置Content-Type
标题。在发送任何输出之前,请致电header
:
header('Content-Type: application/json');
答案 1 :(得分:2)
这不是有效的JSON。你的名字周围没有引号。 PHP已经内置了json编码/解码函数,因此您不必自己构建字符串。
echo json_encode(array("value" => $id /* etc
答案 2 :(得分:0)
手动将数据转换为json不是一个好习惯,而是使用json_encode
$data = array();
while($tbl=mysql_fetch_array($getship)){
$data[] = $tbl;
}
$return = array("data"=>$data);
echo json_encode($return);
答案 3 :(得分:0)
尝试类似:
while($row = mysql_fetch_array($getship, MYSQL_ASSOC))
{
$row_set[] = $row;
}
echo json_encode($row_set);
你也可以使用mysql_fetch_assoc。