php - Jquery自动完成功能不会自动完成PHP,Mysql数据
问题描述
我正在尝试使用 JQuery 创建自动完成搜索功能,但未显示结果。在浏览器控制台中,我可以看到请求正在运行:
这是我的搜索功能
public function getAllartikelSearch()
{
$statement = $this->connection->prepare("SELECT * FROM lievers_serienummers.artikel where artikelNummer like :keyword");
$statement->bindValue('keyword', '%' . $_GET['term'] . '%');
$statement->execute();
$result = array();
while($product = $statement->fetch(PDO::FETCH_OBJ)) {
array_push($result, $product->artikelNummer);
}
echo json_encode($result);
}
这被 search.php 调用
<?php
require_once 'database.php';
require_once 'autoloader.php';
$overzichtmanager = new overzichtmanager();
$overzichtmanager->getAllartikelSearch();
?>
这是自动完成代码:
<script>
$(document).ready(function () {
$('#tags').autocomplete({
source: 'search.php'
});
});
</script>
<body>
<header>
<h1>Toevoegen</h1>
</header>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags" name="term"/>
<div id="countryList"></div>
</div>
解决方案
您不应该使用echo
from 方法,只能使用return
. 你不应该输出任何东西,除了你的控制器逻辑。还要避免在方法中使用全局变量,而是将值作为参数传递。fetchAll()
同样,当您可以使用 PDO 的功能时,不需要循环。
public function getAllartikelSearch($term)
{
$sql = "SELECT artikelNummer FROM artikel where artikelNummer like :keyword";
$statement = $this->connection->prepare($sql);
$statement->execute(["keyword" => "%$term%"]);
$result = $statement->fetchAll(PDO::FETCH_COLUMN, 0);
return json_encode($result);
}
现在 search.php 看起来像这样,设置正确的标头并将 JSON 输出到脚本。不要关闭 PHP 代码,除非您在同一文件中的后面有 HTML。
<?php
require_once 'database.php';
require_once 'autoloader.php';
$overzichtmanager = new overzichtmanager();
$json = $overzichtmanager->getAllartikelSearch($_GET["term"]);
header("Content-Type: application/json");
echo $json;
试一试,它应该工作得很好。我怀疑缺少标头会导致问题,或者可能在 JSON 之前或之后输出其他数据。如果问题仍然存在,请检查浏览器中的 JS 控制台是否有错误消息并编辑您的问题以包含它们。
推荐阅读
- python - 在pyspark中检查另一个数据框中的一列中的一列的值
- c# - 找不到命名空间名称“语法树”
- laravel - 如何在laravel中的excel导出中向特定列中的单元格添加超链接?
- php - 带复选框的 PHP 提交表单复选框
- java-8 - 获取 java.lang.IllegalStateException:在测试用例中使用 @MockBean 时重复的模拟定义
- java - 有没有办法点击我刚刚使用 java/selenium 安装的 chrome 扩展?
- html - div vs section vs article的技术差异
- firebase - 当我在firebase上注册用户帐户时如何创建已经制作的集合
- python - IndexError:只有整数、切片 (`:`)、省略号 (`...`)、numpy.newaxis (`None`) 和整数或布尔数组是有效的索引"
- python - Azure Function App - Python - 无需重新初始化的单一连接