jQuery自动完成使用source选项与php返回所有值

时间:2014-04-11 19:41:33

标签: jquery json autocomplete

我尝试使用jQuery自动完成功能来搜索活动列表。用户应在文本框中输入活动的几个字母,例如' ai'并且自动填充应该包含下面弹出的包含这些字母的活动列表,例如“aikido'”,#model;' model aircraft'等...活动列表存储在mysql中服务器上的数据库和我调用php脚本来获取活动列表并将其传递给jQuery自动完成功能。但是,出于某些奇怪的原因,自动填充功能目前列出了下面的下拉框中的所有活动,无论它们是否包含用户输入的文本。

这是我的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);


?>

我认为问题出在&#39; echo json_encode($ activities);&#39;在php文件中排队。我想我应该以不同的格式回应JSON数据。我不太清楚格式是什么。

感谢您的帮助,

汤姆

2 个答案:

答案 0 :(得分:0)

尝试将minLength选项添加到自动填充

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

答案 1 :(得分: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);


?>