我需要这方面的帮助:我在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可能很有用:)
答案 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标准格式。