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.'"
        }';
}

しかし、その先行入力を返すように頼むと、 application/json ではなく text/html で返されるようですChrome ブラウザのスクリーンショット

どうすればこれを機能させることができますか?

前もって感謝します

4

4 に答える 4

2

これは有効な JSON ではありません。名前を引用符で囲みません。PHP には既に json エンコーディング/デコーディング関数が組み込まれているため、文字列を自分で作成する必要はありません。

echo json_encode(array("value" => $id /* etc
于 2013-09-22T15:31:21.137 に答える
2

Content-Typeヘッダーは自分で設定できます。出力が送信される前に、次を呼び出しますheader

header('Content-Type: application/json');
于 2013-09-22T15:29:09.173 に答える
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 に答える