PHP+MySQL数据库自动补全功能无数据返回问题求助
排查姓名自动补全失效的问题
我帮你梳理了代码里的几个关键问题,按顺序排查应该能解决自动补全不显示的问题:
1. 前端JS语法错误(最直接的原因)
看你的Autocomplete初始化代码,这里有个明显的语法错误:
$(function() { $( "#typeahead" ).autocomplete({ source: 'typeaheads.php'; // 这里的分号是错误的! }); });
JavaScript对象的属性配置里,属性值结尾不能用分号,这会直接导致JS报错,Autocomplete根本无法初始化。改成下面这样:
$(function() { $( "#typeahead" ).autocomplete({ source: 'typeaheads.php' }); });
2. 验证后端接口是否正常返回数据
先确认你的typeaheads.php能正确返回JSON:
- 直接在浏览器地址栏访问
typeaheads.php?term=测试姓名(比如typeaheads.php?term=Andi),看看是否输出类似["Andi Surya","Andi Wijaya"]的合法JSON数组。 - 如果返回空白或报错,检查后端代码:
- 确认数据库里的
user表存在,且包含nama字段 - 你的SQL语句存在严重的SQL注入风险,同时特殊字符可能导致SQL执行失败,建议改成预处理语句:
$searchTerm = $_GET['term']; // 使用预处理语句避免注入和语法错误 $stmt = $koneksi->prepare("SELECT nama FROM user WHERE nama LIKE ? ORDER BY nama ASC"); $likeTerm = "%".$searchTerm."%"; $stmt->bind_param("s", $likeTerm); $stmt->execute(); $result = $stmt->get_result(); $data = []; while ($row = $result->fetch_assoc()) { $data[] = $row['nama']; } echo json_encode($data);
- 确认数据库里的
3. 检查前端资源加载是否正常
你用的是//code.jquery.com/开头的CDN链接,确保你的页面是通过http://或https://协议访问的(不是直接打开本地文件的file://协议),否则这些JS/CSS资源可能加载失败。可以通过浏览器F12的「Network」标签,查看jQuery和jQuery UI是否成功加载。
4. 查看浏览器控制台报错
打开浏览器开发者工具(F12),切换到「Console」标签,看看有没有JS报错信息——这能快速定位Autocomplete初始化失败的具体原因。
内容的提问来源于stack exchange,提问作者Vanan Andreas
相关产品推荐
相关产品推荐

