【问题标题】:Autocomplete with PHP, MySQL & jQuery (ajax) not working使用 PHP、MySQL 和 jQuery (ajax) 的自动完成功能不起作用
【发布时间】:2020-02-23 14:26:17
【问题描述】:

我正在尝试在我的 PHP 网站上创建搜索自动完成功能。我有一个名为的 SQL 表:存储新帖子的帖子。我有一个输入搜索字段,我想通过搜索帖子标题来列出帖子,并让它们异步显示。在输入字段中搜索内容时,我收到 200 响应。我相信问题在于从数据库中获取帖子后显示帖子。

服务器现在在我的 XAMP 上运行,并且我也已将其推送到“实时”服务器上进行了测试。我对 jQuery、PHP 和 SQL 都很陌生,所以可能是新手错误……我没有粘贴搜索输入和 jQuery 文件中的所有代码,“只是必需的部分”。

这是输入搜索字段:

<form method="GET" class='navbar__search navbar__col'>
    <input type='search' name='navbar__searchField' id="navbar__searchField" placeholder='Search'>
    <button type="submit">Submit</button>
</form>

这里是 jQuery 逻辑:

$("#navbar__searchField").autocomplete({
    source: "../../php/includes/search.php",
    minLength: 1
});

最后是 search.php 代码:

<?php 

// The connection to the DB is done via this require.
require '../core/init.php';

$search = $_GET['navbar__searchField'];
$sql    = $conn->query("SELECT * FROM posts WHERE title LIKE '%$search%'");

if ($sql->num_rows > 0) {
    while($row = $sql->fetch_assoc()) {
        $data[] = $row['title'];
    }
}

echo json_encode($data); 

$conn->close();
?>

目前我没有收到任何 PHP 或网络错误。我确实在 HTML 文档的底部得到一个字符串说。没有搜索结果。

【问题讨论】:

  • 这个函数有什么作用? sanitizeInput() 。你确定那没有失败?我也会尝试删除 method="" 或告诉它这是一个 GET 方法。不确定那会做什么。我还将提交输入更改为具有提交类型的按钮。
  • 只清理修剪、stirpsslashes 和删除 htmlspecialchars。我没有使用该功能但没有帮助
  • 您不需要所有这些附加功能。只需完全删除该自定义功能。然后,为 PHP 启用错误报告并使用 mysqli_error($conn) 检查查询中的错误,以涵盖所有基础,并查看开发人员控制台。您也将它与 HTTP 协议一起使用,对吗?而不是直接在您的浏览器中作为file:///?另外,如果它单独工作(php/mysql),那么很可能是 JS 失败了。
  • 正如我在第一个(已编辑)评论中所说的那样。尝试将&lt;input type="submit" value="submit"&gt; 更改为&lt;button type="submit"&gt;Submit&lt;/button&gt;。带有 jquery 的输入有时不适用于输入。我经常看到这种情况。
  • 我根据您所说的更新了问题。 PHP 错误从一开始就启用,我在 XAMP 上运行它。我现在得到的是在 HTML 文档的最低级别,在您开始输入后会显示一个字符串:没有搜索结果。

标签: php jquery sql ajax


【解决方案1】:

我在我的机器上做了一个测试,从example in the documentation开始。

如果您在输入中输入“word”而不按提交按钮,您会看到它在名为 term 的变量中发送到服务器:请求 URL 将是 http://localhost/search.php?term=word(我真的不知道为什么到目前为止,可能是一些 JQuery 内部的)。如果您将搜索变量更改为$search = $_GET['term'],则自动完成功能将起作用。

【讨论】:

  • 啊,太好了,谢谢,我一整天都无法让它工作,但只要按照你说的做就可以了,谢谢!我需要研究为什么需要 ['term'] 才能使其工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 2017-12-29
  • 2013-09-27
  • 2014-01-16
  • 2016-05-03
  • 1970-01-01
相关资源
最近更新 更多