1

私はこのことで助けが必要です:私はjqGridでオートコンプリートを行っています.JSONをオートコンプリートの入力に返す必要があります. 私はこのようなことをしていますが、オートコンプリートでは1つの値を返すだけで、データベースには複数あります。誰かがこれで私を助けることができます。私はこのようにリターンをしています:

...
header("Content-Type: application/json");
$i=0;
while($row = pg_fetch_array($result)) {
   $response->input['value']=$row[ac_fin_g];
   $i++;
}
echo json_encode($response);
...

たとえば..データベースに ac_fin_g: {house, home, cake} の値があります。文字「O」を書くと、オートコンプリートで「HOUSE」と「HOME」が正しく表示されますが、これは行われません。このコードの上記のコードを変更すると (input="HO" の場合):

...
header("Content-Type: application/json");
$i=0;
while($row = pg_fetch_array($result)) {
   $response->input[$i]['value']=$row[ac_fin_g];
   $i++;
}
echo json_encode($response);
...

私は正しいJSONを持っています:

{"input":[{"value":"HOME      "},{"value":"HOUSE     "}]}

申し訳ありませんが、これを修正する方法がわかりません。誰かが私を助けることができますか?


更新: @Oleg のおかげで、これを行う方法がわかりました。私の場合は次のとおりです。

$i=0;
while($row = pg_fetch_array($result)) {
$response[] = $row[ac_fin_g]; $i++;
}
echo json_encode($response);

:)

PS: このリンクは役に立ちます :)

4

2 に答える 2

0

サーバーは、jQuery UI を期待する JSON データを作成する必要があります。JSON データは、 jQuery UI Autocomplete ドキュメントに対応しています。

["HOME", "HOUSE"]

また

[{"label": "Home", "value": "HOME"}, {"label": "House", "value": "HOUSE"}]

それ以外の

{"input":[{"value":"HOME      "},{"value":"HOUSE     "}]}

現在生成しているもの。クライアント側で他の JSON データをデコードする方法はありますが、jQuery UI オートコンプリートの標準形式に従うことをお勧めします。

于 2013-03-13T12:37:44.577 に答える
0

現在、ある値を別の値で上書きしています。これを置き換えるだけです:

while($row = pg_fetch_array($result)) {
   $response->input['value']=$row[ac_fin_g];
   $i++;
}

while($row = pg_fetch_array($result)) {
   $response->input['value'][]=$row[ac_fin_g];
   $i++;
}
于 2013-03-13T12:11:50.673 に答える