2012-03-18 60 views
1

我试图创建一个自动完成场与远程源从SQL数据库提取数据:从MySQL数据库jQueryUI的自动完成返回结果

$("#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

你有什么问题? – Rafay 2012-03-18 17:03:43

+0

尝试'$ .getJSON(“../ autcomplete/venues.php?callback =?”,{term:req},function(' – Rafay 2012-03-18 17:05:26

+0

对不起,我应该澄清 - 自动完成功能根本不起作用。我尝试了'{term:req}',但无济于事。 – 2012-03-18 17:17:01

回答

0

jQuery的自动完成需要一个label和/或value外地回来:

标签属性显示在建议菜单。在用户从菜单中选择一些内容后,该值将被插入到输入元素中。如果只指定了一个属性,它将用于两个,例如。如果您仅提供值属性,则该值也将用作标签。 jquery ui docs

有许多的方法来解决这一点,但如果你正在使用jsonp你可以尝试jquery ui's example

你可以尝试改变这一点:

$venues[$x] = array("venueName" => $row["venueName"]); 

这样:

$venues[$x] = array("label" => $row["venueName"]); 

它将使用label的值下拉选项和下拉列表的value属性。

+0

这正是我出了问题,谢谢你的帮助p! – 2012-03-19 22:05:22