0

我正在尝试在我的网站上实现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 Chrome浏览器截图

我怎样才能使它工作?

提前致谢

4

4 回答 4

2

您可以Content-Type自己设置标题。在发送任何输出之前,调用header

header('Content-Type: application/json');
于 2013-09-22T15:29:09.173 回答
2

那不是有效的 JSON。名称周围没有引号。PHP 已经内置了 json 编码/解码函数,因此您不必自己构建字符串。

echo json_encode(array("value" => $id /* etc
于 2013-09-22T15:31:21.137 回答
0

手动将数据转换为 json 不是一个好习惯,而是使用json_encode

$data = array();
while($tbl=mysql_fetch_array($getship)){
   $data[] = $tbl;
}
$return = array("data"=>$data);
echo json_encode($return);
于 2013-09-22T15:41:16.057 回答
0

尝试类似:

while($row = mysql_fetch_array($getship, MYSQL_ASSOC))
{
    $row_set[] = $row;
}

echo json_encode($row_set);

你也可以使用 mysql_fetch_assoc。

于 2013-09-22T15:51:45.390 回答