jQuery Ui 自动完成没有从 PHP MySQL 文件中获取价值

Posted

技术标签:

【中文标题】jQuery Ui 自动完成没有从 PHP MySQL 文件中获取价值【英文标题】:jQuery Ui autocomplete Not Getting Value From Php MySQL File 【发布时间】:2018-05-04 23:12:23 【问题描述】:

我正在使用 jquery ui 自动完成,但是当我试图从简单的 javascript 变量中获取值时,我得到但 jquery Ui 自动完成无法使用 php mysql 文件,这是我的代码

<div class="col-md-12" class="col-centered">

                   <input id="tags" type="text" class="dic_input ui-autocomplete-input" data-provide="tags" name="ajaxData"/>
                   <button class="btn btn-lg btn-default"><i class="fa fa-2x fa-search"></i></button>
            </div>

这是我的javascript代码

$(function() 
 var availableTags = [
      "ColdFusion",
      "Erlang",
      "Fortran",
      "Groovy",
      "Haskell",
      "Java",
      "JavaScript",
      "Lisp",
      "Perl",
      "PHP",
      "Python",
      "Ruby",
      "Scala",
      "Scheme"
    ];
    $("#tags").autocomplete(
        source: "auto.php",
        minLength: 1
    );
);

这是我的 php 代码

$db=mysql_connect("localhost","root","");
    mysql_select_db("hifzil");

    $searchTerm = $_GET['term'];

    //get matched data from skills table
    $sql ="SELECT lemma FROM lemma WHERE lemma like '" . $searchTerm . "%' ORDER BY lemma LIMIT 0,6";

    $q=mysql_query($sql);
    while ($row = mysql_fetch_array($q)) 
        $data[] = str_replace("-"," ",$row['lemma']);

    

    //return json data
    echo json_encode($data);

【问题讨论】:

这段代码有很多问题。阅读最佳 php 实践。同时,请不要使用这个 我在本地工作,你能找到解决这个问题的方法吗? 【参考方案1】:

这是不可能的,首先你在本地做 avaiableTags 但是在你放置一个远程源之后,你的示例是你在 jquery 中找到的基本示例,但是示例在本地所以至少 source:avaiableTags , 如果你想进行远程调用,你可以使用下面的代码,但用 f12 打开浏览器的控制台日志,然后放入你自己的选择项

$("#tags").autocomplete(
    source:function(request,response)
        $.ajax(
          type: "GET",
          data:,
          url: "auto.php",
          dataType: "json",
          success:function(data)
               console.log(data);                         
           
         );                                        
    ,
    select: function(event,ui),//your own at the selct item 
    change: function(event,ui),//your own in change event
    response: function(event, ui) //your own in response 
    minLength: 1
);

在 php 中我认为数组不正确......你必须写

        $data[] = array('item'=>str_replace("-"," ",$row['lemma']))

在成功的 javascript 之后,您可以编写

                          success:function(data)

                                 items= data;
                                 listItem=[];
                                 for (i=0; i<items.length; i++)
                                   listItem[i] = items[i]['item'];
                                 
                               response(listItem);                                
                           

并且响应将是在选择事件之后的项目列表,您可以在选择...等..等..但必须使用控制台浏览器才能看到答案。

Javascript:

$("#tags").autocomplete(
    source:function(request,response)
        $.ajax(
          type: "GET",
          data:term: request.term,
          url: "auto.php",
          dataType: "json",
          success:function(data)
                             items= data;
                             listItem=[];
                             for (i=0; i<items.length; i++)
                               listItem[i] = items[i]['item'];
                             
                           response(listItem);                        
           
         );                                        
    ,      
    minLength: 1
);

PHP:

$db=mysqli_connect("localhost","root","","hifzil");

$searchTerm = $_GET['term'];

//get matched data from skills table
$sql ="SELECT lemma FROM lemma WHERE lemma like '" . $searchTerm . "%' ORDER BY lemma LIMIT 0,6";
$data = array();
$q=mysqli_query($db,$sql);
while ($row = mysqli_fetch_assoc($q)) 
    $lemma = str_replace("-"," ",$row['lemma']);
    $data[] = array('item'=>$lemma);



//return json data
$result = json_encode($data);
print $result;

【讨论】:

你确定 sql 是正确的吗?如果 json 编码不为空,我插入的代码可以工作我现在尝试过,它可以控制数据库上的查询...[$i]['item'] in javascript 是 json php 中的关键项...使用 mysqli_fetch_assoc不是数组....并且不要使用 mysql 它已弃用使用 mysqli ;) 是的,因为当我尝试通过查询字符串获取结果时,我得到了 我上传了图片你可以看到 那么在 ajax 的数据中插入数据:term: request.term,并使用我的 mysqli_fetch_assoc 和 $data[] = array('item'=>$row['lemma' ]) 你能在这里编辑你的答案吗,这对我很有帮助,我工作了 10 个小时并且卡住了:(

以上是关于jQuery Ui 自动完成没有从 PHP MySQL 文件中获取价值的主要内容,如果未能解决你的问题,请参考以下文章

jQuery UI 自动完成多个远程(JSON、PHP、JS)

使用带有多个输入字段的 jquery-ui 自动完成

jQuery UI 自动完成,使用 PHP/MySQL 搜索 2 个表

没有 jQuery UI 的自动完成

从 Jquery-ui 自动完成到 typeahead.js

jquery - 使用 PHP 自动完成