2013-03-13 28 views
1

我需要幫助:在jqGrid中做一個自動完成,我需要做的是將JSON返回到自動完成的輸入。我正在做這樣的事情,但在我的自動完成中只返回一個值,而在數據庫中我有一個以上的值。有人可以幫助我。我做這樣的回報:JSON - 將JSON返回給輸入jqGrid自動完成

... 
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值:{房子,家庭,蛋糕}。如果我寫了字母「O」,則在我的自動填充中出現的正確的「HOUSE」和「HOME」,但這不會發生。當我改變上面的代碼此代碼(輸入=「何」):

... 
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  "}]} 

我很抱歉,但我不知道怎麼樣解決這個問題。有人可以幫助我嗎?


UPDATE: 感謝@Oleg我想通了,如何做到這一點。我的情況是:

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

:)

PS:這link可能是有用的:)

回答

0

服務器應該創造出期望的jQuery UI JSON數據。對應於jQuery UI Autocomplete documentation JSON數據應該是

["HOME", "HOUSE"] 

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

,而不是

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

您目前產生。有辦法在客戶端解碼任何其他JSON數據,但最好遵循jQuery UI Autocomplete標準格式。

+0

感謝回覆@Oleg。而且我很抱歉,但我該如何改變這一點?我嘗試了很多形式。看起來像你的形式是:'$ i = 0; while($ row = pg_fetch_array($ result)){$ response = $ row [ac_fin_g]; $ I ++; } echo json_encode($ response);'。這將返回**「HOME」**當我寫** HO **時,所以它還沒有工作:( – mailazs 2013-03-13 13:18:58

+0

我得到了這個!謝謝!!! 如果有人不知道該怎麼做......在這種情況下是:'$ i = 0; while($ row = pg_fetch_array($ result)){$ response [] = $ row [ac_fin_g]; $ i ++;} echo json_encode($ response);'在[link] ://stackoverflow.com/questions/1830264/how-can-i-convert-the-result-of-this-postgres-db-query-into-json-to-return-to-my)還有另一個例子: )感謝幫助的人!:) – mailazs 2013-03-13 13:47:23

+0

@mzs_newbie:不客氣! – Oleg 2013-03-13 16:03:08

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++; 
} 
+0

這不適合我...因爲這會返回我這樣的內容:'{「input」:{「value」:[「HOME」,「HOUSE」]}}'例如, @ Oleg說,我需要這樣的東西:'[{「label」:「Home」,「value」:「HOME」},{「label」:「House」,「value」:「HOUSE」}]'。但感謝回覆:) – mailazs 2013-03-13 13:24:14