以JSON格式返回Mysql SQL结果

时间:2013-09-22 15:27:39

标签: javascript php mysql json

我正在尝试将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 screenshot from Chrome browser

我该如何使其发挥作用?

提前致谢

4 个答案:

答案 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。