jQuery自动完成输入框

时间:2013-03-26 05:59:23

标签: php jquery json

所以我使用jQuery和PHP创建了一个自动完成框来从数据库中提取内容,并且它工作正常,除非我输入输入框时它会拉回所有结果,而不是类似于我正在打字。

因此,如果您输入测试,则会退回:

This
is
a
Test

而不是显示

Test

这是我的HTML

<input type="text" id="group_name" name="group_name">

这是我正在使用的jQuery

<script>
     $(document).ready(function() {
        $( "#group_name" ).autocomplete({
              source: "/wuzhapnn/php/data_stream/group_names",
              select: function(event, ui) { 
              $("#f").submit(); }
        });
    });
</script>

这是我的php页面

if ($_GET['run'] == 'group_names') {
    // pulls live data from database
    $db = db_open();
    $query = "SELECT group_name FROM groups";
    $result = db_query($db, $query);
    if (db_num_rows($result) > 1) {
        $result = db_fetch_all($result);
        foreach ($result as $key=>$value) {
            $group_names_array[] .= $value['group_name'];
        }   
    } else {

    }

    echo json_encode(array_values(array_unique($group_names_array)));  
}
  • 最近更新

新jQuery

<script>
    var availableName;

    $.getJson('/wuzhapnn/php/data_stream',function(response){
        availableName = response;
    });

     $(document).ready(function() {
        $( "#group_name" ).autocomplete({
            source: availableName,
              select: function(event, ui) { 
              $("#f").submit(); }
        });
    });
</script>

新的PHP页面

if ($_GET['run'] == 'group_names') {
    // pulls live data from database
    $db = db_open();
    $query = "SELECT group_name FROM groups WHERE group_name LIKE '%".$_GET['term']."%'";
    $result = db_query($db, $query);
    if (db_num_rows($result) > 1) {
        $result = db_fetch_all($result);
        foreach ($result as $key=>$value) {
            $group_names_array[] .= $value['group_name'];
        }   
    } else {

    }

    echo json_encode(array_values(array_unique($group_names_array)));  
}

3 个答案:

答案 0 :(得分:2)

您需要添加LIKE子句。

"SELECT group_name FROM groups WHERE group_name LIKE '%".$_GET['term']."%'";

因为"SELECT group_name FROM groups"这将提供database的所有结果,但您只需要那些匹配类型字的人,所以请使用LIKE MySQL子句。

其他人评论回复。

如果你想在使用它之前创建json对象,你可以按照下面这样做,

var availableName;

$.getJson('/wuzhapnn/php/data_stream/group_names',function(response){
   availableName = response;
});

之后只需使用以下代码即可自动完成。

$( "#group_name" ).autocomplete({
     source: availableName ,

答案 1 :(得分:1)

您的PHP代码段实际上并未使用自动完成插件发送的值。 如果您使用的是JQuery&#39; plugin,则值send是一个名为 terms 的GET参数。

这需要包含在您的PHP中。

$term = $_GET['term'];

然后,您需要在查询中包含类似以下内容的内容,但首先请在将该值直接用于SQL语句之前将其转义

SELECT group_name FROM groups WHERE group_name LIKE %<term>%

答案 2 :(得分:0)

让它正常工作

新jQuery

<script>
    $(function() {       
        $( "#group_name" ).autocomplete({
          source: "/wuzhapnn/php/data_stream",
          minLength: 2,
        });
      });
</script>

新PHP (感谢Dipesh Parmar)

// pulls live data from database
$db = db_open();
$query = "SELECT group_name FROM groups WHERE group_name LIKE '%".$_GET['term']."%'";
$result = db_query($db, $query);

    $result = db_fetch_all($result);
    foreach ($result as $key=>$value) {
        $group_names_array[] .= $value['group_name'];
    }   


echo json_encode(array_values(array_unique($group_names_array)));