JSON - 将JSON返回到输入jqGrid自动完成

时间:2013-03-13 12:09:10

标签: json jqgrid autocomplete

我需要这方面的帮助:我在jqGrid中进行自动完成,我需要做的是将JSON返回到自动完成的输入。我正在做这样的事情,但在我的自动完成中只返回一个值,在数据库中我有多个。有人可以帮助我。我正在做这样的回报:

...
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:这link可能很有用:)

2 个答案:

答案 0 :(得分: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++;
}

答案 1 :(得分: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标准格式。