从mySQL数据库返回jQueryUI自动完成的结果

时间:2012-03-18 16:53:20

标签: jquery jquery-ui autocomplete

我正在尝试创建一个自动完成字段,其中一个远程源从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; 

我几个小时以来一直在讨论为什么这不起作用,并通过大量的在线资源寻找答案,但没有找到解决我问题的方法。任何帮助将不胜感激。

1 个答案:

答案 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值。