2014-04-11 64 views
0

我想使用jQuery自動完成功能來搜索活動列表。用戶應該在文本框中輸入活動的幾個字母,例如'ai',自動完成應該有一個包含這些字母的活動列表,如'合氣道','模型飛機'等。 。活動列表存儲在服務器上的mysql數據庫中,我打電話給php腳本以獲取活動列表並將其傳遞給jQuery自動完成功能。但是,出於某種奇怪的原因,自動完成功能目前在下拉框中列出了所有活動,無論它們是否包含用戶輸入的文本。jQuery自動完成使用源選項與PHP返回所有值

這裏是我的HTML:

<label for="activity">Select Activity:</label> 
<input id="activity"> 

這裏是我的javascript:

$("#activity").autocomplete({ 
    source: "php/getActivities.php" 
}); 

這裏是我的PHP文件:

<?php // CreateAdForm.php 

// Connect to database 
include_once 'dbConnect.php'; 

$activities = array(); 

$query = "SELECT activity FROM activities WHERE listed=true"; 
$resource = mysql_query($query); 

// Push all these activities onto the array 
while($row = mysql_fetch_row($resource)) { 

    array_push($activities, $row[0]); 

} // end of loop through activities 

// Return the activities 
echo json_encode($activities); 


?> 

我認爲這個問題是與「回聲json_encode($活動);」在PHP文件中的行。我想我應該以不同的格式回顯JSON數據。我只是不太確定格式。

感謝您的幫助,

湯姆

+0

使用'標題(「內容類型:應用程序/ JSON」);' –

回答

0

我認爲你需要在你的SQL添加一個條件,以濾除結果搜索詞。試着在你的PHP腳本這樣做:

<?php // CreateAdForm.php 

// Connect to database 
include_once 'dbConnect.php'; 

// Search term 
$term = $_GET['term']; ///// 

$activities = array(); 

$query = "SELECT activity FROM activities WHERE listed=true AND activity LIKE '%" . $term . "%'"; 
$resource = mysql_query($query); 

// Push all these activities onto the array 
while($row = mysql_fetch_row($resource)) { 

    array_push($activities, $row[0]); 

} // end of loop through activities 

// Return the activities 
echo json_encode($activities); 


?> 
+0

This Works!謝謝。 – Tom78

0

嘗試添加的minLength選項將自動完成

$("#activity").autocomplete({ 
    minLength: 2,  
    source: "php/getActivities.php" 
}); 
+0

這仍然產生相同的行爲 - 它列出數據庫中的所有活動。只是現在用戶必須在輸入兩個字符之前輸入。 – Tom78