【发布时间】:2021-02-23 17:50:52
【问题描述】:
我正在尝试使用自动完成功能获取一些学校名称。但名称列表没有出现。当我输入例如“uni”时,它正在向 sclist.php 文件发出请求,例如 sclist.php?term=uni它会在网络控制台中返回这个作为响应:
uni
[
"University of Cambridge",
"University of Michigan",
"University of Oxford",
"University of Virginia"
]
我似乎找不到名称列表未出现的原因。这是我的第一个自动完成实现。非常感谢任何帮助。
autocom.php 文件:
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>jQuery UI Autocomplete functionality</title>
<script src = "https://code.jquery.com/jquery-1.10.2.js"></script>
<script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<!-- Javascript -->
<script>
$(function() {
$( "#automplete" ).autocomplete({
source: 'sclist.php',
autoFocus:true
});
});
</script>
</head>
<body>
<!-- HTML -->
<p>Type something</p>
<input id = "automplete">
</body>
</html>
sclist.php 文件:
<?php
require_once('connectToDB.php');
if (isset($_GET['term']))
echo $_GET['term']."\n";
else
echo "not set";
require_once 'connectToDB.php';
$stmt=$portbleDocObj->prepare('SELECT name FROM Institution WHERE name LIKE :prefix ');
$stmt->execute(array( ':prefix'=>$_GET['term']."%") );
$returedData=array();
while ( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
$returedData[] = $row['name'];
}
print_r($row);
echo(json_encode($returedData, JSON_PRETTY_PRINT));
?>
【问题讨论】:
-
if (isset($_GET['term'])) { echo $_REQUEST['term']."\n";???为什么不echo $_GET['term']你只是确保它在那里并设置 -
你没有返回有效的 json,因为那个“uni”
-
@RiggsFolly 不是真的...
PHP语法很好。 -
@RiggsFolly 和
print_r不会弄乱语法。echo $_REQUEST['term']."\n";可以。$row最后为空(null)。 -
@RiggsFolly 是的,但最后它只会在未设置的情况下返回 null ,否则数据库将不返回任何记录。如果您的意思是所有其余代码都应该包含在其中,那么您的评论
You are missing a { after the } else有点误导。更好的解决方案是使用“return”或“die”。为什么它不起作用的主要问题是它不是有效的 json,因为echo $_GET['term']."\n";行。null或false可以正常工作,通过 jQuery 解析 json 时不会出错。
标签: javascript php html jquery jquery-ui-autocomplete