【问题标题】:AJAX, JQuery Ud / PHP: POST Method Autocomplete not showing upAJAX、JQuery Ud / PHP:POST 方法自动完成未显示
【发布时间】:2017-05-20 12:38:09
【问题描述】:

我目前正在创建一个带有“自动完成”功能初始化的 Wordpress 模板,代码如下。目前我的自动完成功能不起作用,也没有任何显示。检查系统,它给了我...

 Uncaught ReferenceError: request is not defined

我最近有一个自动完成功能,但它无法使用自动完成功能键盘向上、向下和输入功能。它可以使用鼠标,但不能使用键盘功能。它在 wordpress 模板上,现在只是由鼠标控制。另一个关键因素是它是“POST”而不是“GET”。另一个关键因素是我确实有一个隐藏的输入字段,其 id 称为“search-id”。 “search-id”的隐藏输入字段与 id 一样更新并发送到服务器,而“search-box”输入字段仅向用户显示完整描述,但如果值我们发送的只是 id。可以在 HTML 和 PHP 中看到...请帮助说明为什么我的自动完成功能不起作用?

JQuery UI / AJAX

    <script>
        $(document).ready(function(){
            $("#search-box").autocomplete({
                minLength: 2,
                source: function(request, response){
                    $.ajax({
                        type: "POST",
                        url: "autocomplete.php",
                        data:'keyword=' + req.term,
                        success: response,
                        dataType: 'json',
                        minLength: 2,
                        delay: 100

                    });
                },
                select: function(event, ui){
                    $("#search-box").val(ui.item.label);
                    $("#search-id").val(ui.item.value);
                    return false;
                }
            });
        });
        /* function selectCountry(val) {
          $("#search-id").val(val);
          $("#suggesstion-box").hide();
        }
        function updateSearchBox(el) {
          $("#search-box").val($(el).html());   
        } */
    </script>

HTML

<form role="search" name="remarks_lookup" id="myForm" method="post" class="search-form" action="remarks-look-up" >
    <div style="background-color:#ffffff; width:100%; float:left;  padding-bottom:25px; clear:both;  ">
        <div class="frmSearch " style="width:80%; float:left;"   >
            <label>                                             
                <input type="search" name="jurisdiction_search" id="search-box"  placeholder="Enter County, City, or Client Name" autocomplete="off" />
                <input type="hidden" name="search" id="search-id"  />
                <div class="box" id="suggesstion-box"></div>
            </label>
        </div>
        <div style="width:20%; float:left; clear:right;">
            <label>                                         
                <input style="width:100%; height: 50px;" type="submit"  value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
            </label>
        </div>
    </div>
</form> 

自动完成.php

<?php
include_once "functions.php";

     if(isset($_POST['keyword']))
    {
        $database = lookup_connectToDatabase();                     
        $result = pg_query($database, "SELECT country, id, state FROM customers WHERE country iLIKE '" . $_POST["keyword"] . "%' OR id iLIKE '" . $_POST["keyword"] . "%' ORDER BY country");

        if (!$result){
                echo "<div class='show' align='left'>No matching records.</div>";
        }else {

            while($row=pg_fetch_assoc($result)){

                $array[] = array(
                    'label' = $row['id'].': '.$row['country'].', '.$row['state'],
                    'value' = $row['id'],
                );

            } 
            echo json_encode ($array);
        }
    }                                                   
?>

总的来说,我想要完成的是能够使用键盘功能(比如上下箭头,甚至在建议框上按回车键,然后让搜索 ID 输入字段显示描述,他们有再次按回车键,它会将搜索 ID 发送到服务器。

过去一个月我一直在研究这个问题,试图找出修复我的自动完成功能的不同方法。我是 JSON、JQuery-UI 和 Ajax 的新手。在我的网站上完成此功能时,我确实需要任何人的帮助。请帮忙!

如果您愿意提供帮助并希望仔细查看代码甚至对其进行测试,请告诉我。我需要任何帮助来完成此自动完成功能。

【问题讨论】:

    标签: php ajax jquery-ui autocomplete jquery-ui-autocomplete


    【解决方案1】:

    想通了....下面是我的答案....

    jQuery 用户界面

    <script>
    $(document).ready(function(){
            $("#search-box").autocomplete({
            minLength: 2,
            source: function(request, response){
                $.ajax({
                    type: "POST",
                    url: "autocomplete.php",
                    dataType: "json",
                    data:'keyword=' + request.term,
                    success: function(data){
                        response(data);
                    }
                });
            },
            select: function(event, ui){
                $("#search-box").val(ui.item.label);
                $("#search-id").val(ui.item.value);
                return false;
            }
        });
    });
    </script>
    

    HTML

    <form role="search" name="remarks_lookup" id="myForm" method="post" class="search-form" action="/VCSWeb/remarks-look-up/" >
        <div style="background-color:#ffffff; width:100%; float:left;  padding-bottom:25px; clear:both;  ">
            <div class="frmSearch " style="width:80%; float:left;"   >
                <label>                                         
                    <input   size="59" maxlength="75" type="search" name="jurisdiction_search"  class="search_keyword" id="search-box"  placeholder="Enter Jurisdiction, County, City, or Client Name"  />
                    <input type="hidden" name="search" id="search-id"  /> 
                </label>
            </div>
            <div style="width:20%; float:left; clear:right;">
                <label>                                         
                    <input class="search_button" style="width:100%; height: 50px;" type="submit"  value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
                </label>
            </div>
        </div>
    </form>
    

    PHP

    <?php
         if(isset($_POST['keyword']))
        {
            $database = lookup_connectToDatabase();                     
            $result = pg_query($database, "SELECT country, id, state FROM customers WHERE country iLIKE '" . $_POST["keyword"] . "%' OR id iLIKE '" . $_POST["keyword"] . "%' ORDER BY country");
    
            if (!$result){
                    echo "<div class='show' align='left'>No matching records.</div>";
            }else {
    
                while($row=pg_fetch_array($result)){
    
                    $array[] = array(
                        'label' => '('.$row['id'].') '.$row['country'].', '.$row['state'],
                        'id' => $row['country'].', '.$row['state'],
                        'value' => $row['id'],
                    );
    
                } 
                echo json_encode ($array);
            }
        }                                                   
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 2017-07-23
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多