2012-03-18 57 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