2014-02-09 71 views
1

所以我有這個代碼,我用於搜索框(就像我們在谷歌,自動搜索)。 在以下示例中,值爲硬編碼,但是,我需要在數組中使用動態值。在jQuery自動完成中獲取動態值

下面的代碼: -

<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>jQuery UI Autocomplete - Default functionality</title> 
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css"> 
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
    <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> 
    <link rel="stylesheet" href="/resources/demos/style.css"> 
    <script> 
    $(function() { 

    var availableTags = [ 
     "ActionScript", 
     "AppleScript", 
     "Asp", 
     "BASIC", 
     "C", 
     "C++", 
     "Clojure", 
     "COBOL", 
     "ColdFusion", 
     "Erlang", 
     "Fortran", 
     "Groovy", 
     "Haskell", 
     "Java", 
     "JavaScript", 
     "Lisp", 
     "Perl", 
     "PHP", 
     "Python", 
     "Ruby", 
     "Scala", 
     "Scheme" 
    ]; 
    $("#tags").autocomplete({ 
     source: availableTags 
    }); 
    }); 
    </script> 

</head> 
<body> 

<div class="ui-widget"> 
    <label for="tags">Tags: </label> 
    <input id="tags"> 
</div> 


</body> 
</html> 

我怎麼會在這個地方一個動態數組? 您可能會想到我有一個變量$ row它從mysql數據庫中動態獲取數據(搜索選項)。

謝謝。

編輯: -

PHP代碼,其取的值: -

<?php 
include 'dbconnector.php'; 
    $query="SELECT firstname from users order by userid"; 
    $result=mysql_query($query,$db) or die (mysql_error($db)); 
    $row=mysql_fetch_array($result); 

?> 
+0

請向我們展示您當前的PHP代碼! :) –

+0

@DanielLisik 用php代碼更新。 – Ankur

+0

您需要在php文件中將結果'$ row'編碼爲json,然後使用該php文件作爲自動完成的源文件。使用本教程作爲參考http://bit.ly/1gj2DDM – EmileKumfa

回答

3

jQuery UI的自動填充具有 '遠程' 數據功能記錄here。最簡單的版本是:

$("#tags").autocomplete({ 
    source: 'script.php' 
}); 

script.php應該返回JSON數據。所以你可以從你的$行創建一個數組,然後json_encode並返回。

按照承諾,以下是使用您的代碼作爲基礎的粗略示例。免責聲明:我不是100%熟悉jQuery UI預期的格式,並且您應該知道mysql_query()是deprecated,您應該探索諸如mysqliPDO的替代方案。

已更新回答顯示使用jQuery UI發送的$ _GET ['term']。我假設你在尋找名字?我正在使用數據庫列'firstname'。

巨大的免責聲明:現在,您正在將用戶生成的字符串傳遞到數據庫查詢中,請確保您正確地進行消毒。我已經使用mysql_real_escape_string()來匹配你的例子,但它已被棄用,你應該調查上述替代方案。

// Sanitise GET var 
$term = mysql_real_escape_string($_GET['term']); 

// Add WHERE clause 
$query = "SELECT `id`, `firstname` FROM `users` WHERE `firstname` LIKE '%".$term."%' ORDER BY `id`"; 

$result = mysql_query($query,$db) or die (mysql_error($db)); 

while($row = mysql_fetch_array($result)){ 

    $array[$row['id']] = $row['firstname']; 

} 

header('Content-type: application/json'); 
print json_encode($array); 
exit(); // AJAX call, we don't want anything carrying on here 
+0

script.php文件是否有任何示例? 我真的很新的JSON。 – Ankur

+1

好的,我會編輯我的答案 – JamesG

+0

謝謝你發佈這個。我會嘗試一下並回復你。 – Ankur