jQuery UI 自动完成 - 未找到结果

Posted

技术标签:

【中文标题】jQuery UI 自动完成 - 未找到结果【英文标题】:jQuery UI Autocomplete - No results found 【发布时间】:2015-01-28 00:07:05 【问题描述】:

我有以下

<form action="" method="post">
  <input type="text" class="auto" name="search" autocomplete="off">
</form>

<script>
  $(document).ready(function($)
    $('.auto').autocomplete(
     source:'connect.php',
     minLength:1
    );
  );
</script>

还有connect.php 我知道我必须在将 $term 输入到我的查询之前对其进行清理。

if(isset($_GET['term'])) 
  require "db.php";

  $con = mysqli_connect("$host","$user","$password","$db");

  if (mysqli_connect_errno())
    
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    

  $term = $_GET['term'];
  $query = "SELECT `name` FROM `products` WHERE `name` LIKE '%$term%'";
  $result = mysqli_query($con, $query);

  while ($row = mysqli_fetch_array($result)) 
    echo json_encode($row);
  

如果我在输入字段中输入 M 并使用 chrome 工具检查响应,我会得到这个。

"0":"MacBook Pro 13 英寸","name":"MacBook Pro 13 英寸""0":"MacBook Pro 15 英寸","名称":"MacBook Pro 15 英寸""0":"MacBook Air 13 英寸","名称":"MacBook Air 13 英寸""0":"MacBook Air 11 英寸","名称":"MacBook Air 11 英寸""0":"iMac 21.5 英寸","名称":"iMac 21.5 英寸""0":"iMac 27 英寸","名称":"iMac 27 英寸""0":"Mac Pro 四核","name":"Mac Pro 四核""0":"Mac Pro 6-Core","name":"Mac Pro 6-Core"

但是,由于某种原因,它在页面上显示“未找到结果”,即使有?

【问题讨论】:

【参考方案1】:

您的 php 脚本创建的输出不是有效的 json - 您必须将各个对象包装在一个数组中:

["0":"MacBook Pro 13-inch","name":"MacBook Pro 13-inch", "0":"MacBook Pro 15-inch","name":"MacBook Pro 15-inch", "0":"MacBook Air 13-inch","name":"MacBook Air 13-inch", "0":"MacBook Air 11-inch","name":"MacBook Air 11-inch", "0":"iMac 21.5-inch","name":"iMac 21.5-inch", "0":"iMac 27-inch","name":"iMac 27-inch", "0":"Mac Pro Quad-Core","name":"Mac Pro Quad-Core", "0":"Mac Pro 6-Core","name":"Mac Pro 6-Core"]

像这样修改你的 PHP 脚本:

$result = array();
while ($row = mysqli_fetch_array($result)) 
    $result[] = $row;
  

json_encode($result);

除此之外 - 您的输出应该具有属性 id、值和标签,而不仅仅是“0”。

【讨论】:

$result = mysqli_query($con, $query); 您的方法会覆盖它,然后 while 循环失败。如果我将 $result = array(); 更改为 $results,则会收到内部服务器错误 500

以上是关于jQuery UI 自动完成 - 未找到结果的主要内容,如果未能解决你的问题,请参考以下文章

jQuery UI 自动完成宽度未正确设置

jQuery UI 自动完成:你如何启动一个异步进程并在它完成之前退出它

JQuery UI 自动完成未达到 ActionResult C# MVC

在 jQuery UI 自动完成中限制结果

无法使用 HTML 设置未定义的 jQuery UI 自动完成的属性“_renderItem”

Jquery 自动完成 UI - 多个字段没有结果