簡體   English   中英

以JSON格式返回Mysql SQL結果

[英]Returns Mysql SQL results in JSON format

我正在嘗試將Typeahead.js實施到我的網站。

typeahead.js將取自返回JSON的遠程頁面,
類似於: http://example.org/search?q=%QUERY : 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瀏覽器中的屏幕截圖

我該如何運作?

提前致謝

您可以自己設置Content-Type標頭。 在發送任何輸出之前,請調用header

header('Content-Type: application/json');

那是無效的JSON。 您在名稱兩邊沒有引號。 PHP已經內置了json編碼/解碼功能,因此您不必自己構建字符串。

echo json_encode(array("value" => $id /* etc

手動將數據轉換為json並不是一個好習慣,而是使用json_encode

$data = array();
while($tbl=mysql_fetch_array($getship)){
   $data[] = $tbl;
}
$return = array("data"=>$data);
echo json_encode($return);

嘗試類似:

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

echo json_encode($row_set);

您也可以使用mysql_fetch_assoc。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM