Javascript 从php文件中获取输入建议后自动完成不工作

Javascript 从php文件中获取输入建议后自动完成不工作,javascript,php,jquery,html,sql,Javascript,Php,Jquery,Html,Sql,我想要实现什么? 1.建议列表(可能有相同的标签,但描述不同) 2.从建议列表中选择一个项目时,另一个输入字段的输入应更改为所选项目的相应描述 当我直接用javascript初始化var项目时,它工作正常。但当我将其更改为从php文件中获取建议列表时,只有它的选择部分起作用,并且基于部分输入的过滤结果停止起作用 有关屏幕截图,请访问github上的此链接:- 代码文件如下所示:- test\u jquery\u autocomplete.php <?php

我想要实现什么? 1.建议列表(可能有相同的标签,但描述不同) 2.从建议列表中选择一个项目时,另一个输入字段的输入应更改为所选项目的相应描述

当我直接用javascript初始化var项目时,它工作正常。但当我将其更改为从php文件中获取建议列表时,只有它的选择部分起作用,并且基于部分输入的过滤结果停止起作用

有关屏幕截图,请访问github上的此链接:-

代码文件如下所示:- test\u jquery\u autocomplete.php

     <?php
          include 'session_check_common.php';
          include 'connect_my_sql_db.php';
     ?>

     <!doctype html>
     <html lang = "en">
     <head>
           <meta charset = "utf-8">
           <title>jQuery UI Autocomplete functionality</title>
           <link href = "https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css"
     rel = "stylesheet">
           <script src = "https://code.jquery.com/jquery-1.10.2.js"></script>
           <script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>

  <style>
     #project-label {
        display: block;
        font-weight: bold;
        margin-bottom: 1em;
     }
     #project-description {
        margin: 0;
        padding: 0;
     }
  </style>

  <!-- Javascript -->
  <script>
     $(function() {
        /*var projects = [
           {
              "label": "Java",
              "desc": "write once run anywhere"
           },
           {
              "label": "Java",
              "desc": "rohit here"
           },
           {
              "label": "jQuery UI",
              "desc": "the official user interface library for jQuery"
           },
           {
              "label": "Twitter Bootstrap",
              "desc": "popular front end frameworks "
           }
        ];*/
        $( "#project" ).autocomplete({
           minLength: 0,
           //source: projects,
           source: "get_customers.php",
           focus: function( event, ui ) {
              $( "#project" ).val( ui.item.label );
                 return false;
           },
           select: function( event, ui ) {
              $( "#project" ).val( ui.item.label );
              $( "#project-description" ).html( ui.item.desc );
              $( "#project-description" ).val( ui.item.desc );
              return false;
           }
        })

        .data( "ui-autocomplete" )._renderItem = function( ul, item ) {
           return $( "<li>" )
           .append( "<a>" + item.label + "<br>" + item.desc + "</a>" )
           .appendTo( ul );
        };
     });
  </script>
 </head>

  <body>
   <form action="test_autocomplete.php" class="subform" method="post">
  <div id = "project-label">Select a project (type "a" for a start):</div>
  <input id = "project">
  <input id = "project-description" name="projectdescription">

  <button type="submit">SUBMIT</button>
</form>

jQuery UI自动完成功能
#项目标签{
显示:块;
字体大小:粗体;
边缘底部:1米;
}
#项目说明{
保证金:0;
填充:0;
}
$(函数(){
/*var项目=[
{
“标签”:“Java”,
“描述”:“一次写入,在任何地方运行”
},
{
“标签”:“Java”,
“描述”:“rohit在此”
},
{
“标签”:“jQuery UI”,
“desc”:“jQuery的官方用户界面库”
},
{
“标签”:“推特引导”,
“desc”:“流行的前端框架”
}
];*/
$(“#项目”).autocomplete({
最小长度:0,
//资料来源:项目,
来源:“get_customers.php”,
焦点:功能(事件、用户界面){
$(“#项目”).val(ui.item.label);
返回false;
},
选择:功能(事件、用户界面){
$(“#项目”).val(ui.item.label);
$(“#项目说明”).html(ui.item.desc);
$(“#项目说明”).val(ui.item.desc);
返回false;
}
})
.data(“ui自动完成”)。\u renderItem=功能(ul,项目){
返回$(“
  • ”) .append(“+item.label+”
    “+item.desc+”) .附录(ul); }; }); 选择一个项目(键入“a”作为开始): 提交
  • 并获取_customers.php

      <?php 
        include 'connect_my_sql_db.php';
        $sql="select cust_id, cust_name, father_name from customer"; 
        $cust_name = array();
        $father_name = array();
        $result=mysqli_query($conn, $sql);
        while($row=mysqli_fetch_assoc($result)) 
        { 
          $title=$row['cust_name']; 
          $url=$row['father_name']; 
          $posts[] = array('label'=> $title, 'desc'=> $url);
        } 
        echo json_encode($posts);
       ?>
    

    您需要根据客户名称对结果进行过滤,例如

    $sql="SELECT cust_id, cust_name, father_name FROM customer 
            WHERE cust_name LIKE '%".$_REQUEST['term']."%'";
    
    另外,您需要初始化
    $posts
    变量,否则将导致未定义错误,自动完成响应将失败

    // add below line before while loop
    $posts = array();
    while($row=mysqli_fetch_assoc($result)) {
      ....
    

    我不熟悉JQuery。我不知道如何将“term”传递给我的php文件。你能帮我一下吗?你不需要通过这个学期,在这里阅读更多@Roshan Kumar为什么如果我更改$posts[]=array('label'=>$title,'desc'=>$url),它就不起作用了;收件人:-$posts[]=array('cust\u name'=>title$father\u name'=>url$url);然后,请不要更改它们,否则您也需要在JS代码中更改它们。如果我想显示诸如“客户姓名父亲姓名”之类的建议,请参考。但搜索条件应仅为客户名称。只是让用户做出相应的选择,而不是一次又一次地检查,看看他想选择哪一个。