【问题标题】:jQuery autocomplete using source option with php returning all valuesjQuery自动完成使用源选项和php返回所有值
【发布时间】:2014-04-11 19:41:33
【问题描述】:

我正在尝试使用 jQuery 自动完成功能来搜索活动列表。用户应在文本框中输入活动的几个字母,例如“ai”,自动完成功能应在下方弹出包含这些字母的活动列表,例如“合气道”、“模型飞机”等。 . 活动列表存储在服务器上的 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);


?>

我认为问题出在'echo json_encode($activities);' php文件中的行。我想我应该以不同的格式回显 JSON 数据。我只是不太确定是什么格式。

感谢您的帮助,

汤姆

【问题讨论】:

  • 使用header('Content-Type: application/json');

标签: jquery json autocomplete


【解决方案1】:

我认为您需要在 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);


?>

【讨论】:

    【解决方案2】:

    尝试将 minLength 选项添加到您的自动完成中

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

    【讨论】:

    • 这仍然产生相同的行为 - 它列出了数据库中的所有活动。只是现在用户必须输入两个字符才能执行此操作。
    猜你喜欢
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 2011-12-07
    • 2023-03-24
    • 2012-10-14
    相关资源
    最近更新 更多