来自数据库国家的Jquery自动完成

时间:2016-02-21 11:45:43

标签: php jquery database autocomplete jquery-autocomplete

我在使用数据库中的数据在Jquery中完成自动完成功能时遇到问题。每当我输入内容时,我总会收到“找不到结果”的消息。我希望它在用户输入时显示国家/地区名称。

jquery.php

  <?php
require "database/database.php";
session_start();
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
         <link type="text/css" rel="stylesheet" href="CSS/style.css">
         <script type="text/javascript" src="jquery/jquery-1.11.3.min.js"></script>
        <script src="jquery/jquery-ui.min.js"></script>
    </head>
    <body>
        <form action="" method="post">
            <p><label>Country:</label><input type='text' name='country' value='' class='auto'></p>
        </form>

        <script type="text/javascript">
            $(document).ready(function () {
                $('.auto').autocomplete({
                    source:"suggested.php",
                    MinLength: 2
                });
            });

        </script>
    </body>
</html>

这是我建议的.php页面:

   <?php
require "database/database.php";
$term = trim(strip_tags($_GET['term'])); 
$data = mysql_query("SELECT * FROM countries WHERE countryname LIKE '%".$term."%'");
    while($row = mysql_fetch_assoc($data)) {
        $data[] = array(
        'label' = $row['countryname'],
        'value' = $row['countryname']
        );
    }
    echo json_encode($data);
    flush();
}
?>

在数据库中,我有一个名为countries的表,其中包含countryid,countryname和countryflag。我只需要提取countryname列。 我尝试过使用$ _GET ['term']和$ _REQUEST ['term']。 我尝试了不同的教程,但似乎都没有。 如果您有任何建议请告诉我。 谢谢

1 个答案:

答案 0 :(得分:0)

如果您在键入时每次运行查询都会延迟执行,因为您可以输入值作为查询条件值! I can give you some I tested logic is run your query first when document is loaded and store as a json data type,then you can set source data in autocomplete

  

这可以通过运行SQL查询来减少页面延迟响应时间

     <form action="" method="post">
        <p><label>Country:</label><input type='text' name='country' value='' class='auto'></p>
    </form>

    <script type="text/javascript">
        $(document).ready(function () {
            var source = [];
            $.ajax({
                  url : "suggested.php",
                  data : "GET",
                  dataType : "json",
                  success : function(data){
                       for(var i in data){
                           source.push(data[i]);
                        }
                  }
                 });
            $('.auto').autocomplete({
                source: source,
                MinLength: 2
            });
        });

    </script>

suggested.php

   <?php
   require "database/database.php";       
   $data = mysql_query("SELECT * FROM countries");
   $result = array();
   while($row = mysql_fetch_assoc($data)) {
    $result[] = array(
    'label' = $row['countryname'],
    'value' = $row['countryname']
    );
}
echo json_encode($result);
flush();
}
?>