1

我在这件事上需要帮助:我正在 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:这个链接很有用:)

4

2 回答 2

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 回答
0

服务器应该创建期望 jQuery UI 的 JSON 数据。对应于jQuery UI 自动完成文档JSON 数据应该是

["HOME", "HOUSE"]

或者

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

代替

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

您当前生成的。有办法在客户端解码任何其他 JSON 数据,但最好遵循 jQuery UI 自动完成标准格式。

于 2013-03-13T12:37:44.577 回答