我正在尝试创建一个自动完成字段,其中一个远程源从SQL数据库中提取数据:
$("#venuename").autocomplete({
source: function(req, add){
$.getJSON("../autocomplete/venues.php?callback=?", req, function(data) {
var suggestions = [];
$.each(data, function(i, val){
suggestions.push(val.name);
});
add(suggestions);
});
}
});
venues.php:
require '../../includes/connect.php';
$param = $_GET["term"];
$query = mysql_query("SELECT * FROM venue_details WHERE venueName REGEXP '^$param'");
for ($x = 0, $numrows = mysql_num_rows($query); $x < $numrows; $x++) {
$row = mysql_fetch_assoc($query);
$venues[$x] = array("venueName" => $row["venueName"]);
}
$response = $_GET["callback"] . "(" . json_encode($venues) . ")";
echo $response;
我几个小时以来一直在讨论为什么这不起作用,并通过大量的在线资源寻找答案,但没有找到解决我问题的方法。任何帮助将不胜感激。
答案 0 :(得分:0)
jquery自动填充需要返回label
和/或value
字段:
标签属性显示在建议菜单中。用户从菜单中选择了某些内容后,该值将插入到input元素中。如果仅指定了一个属性,则它将用于两者,例如。如果仅提供value-properties,则该值也将用作标签。 jquery ui docs
有很多方法可以解决这个问题,但如果您使用的是jsonp
,可以试试jquery ui's example
您可以尝试更改此内容:
$venues[$x] = array("venueName" => $row["venueName"]);
到此:
$venues[$x] = array("label" => $row["venueName"]);
对于下拉选项和下拉列表的label
属性,它将使用value
值。