无论您输入什么内容,jquery autocomplete都会显示来自源的所有结果,即使它们在输入字段中不包含任何字符。
代码如下。
$('input#project-name').autocomplete({
source: "project-list.php",
minLength: 2,
autoFocus: true
});
源输出json就像这样。
[{"value":"sdf"},{"value":"asdas"},{"value":"ANOTHERONE"}]
我一直在谷歌上搜索一段时间,但我无法弄清楚我做错了什么。非常感谢任何帮助!
更新
感谢回复的人,但我担心我没有得到它,对不起。我刚刚开始学习这些东西。我的PHP目前看起来像这样。
$userID = $_SESSION['userID'];
$loggedIn = $mysqli->query("SELECT * FROM users WHERE userID = '".$userID."'");
$getRow = "SELECT * FROM projects WHERE projectUserID = '".$userID."'";
if ($loggedIn->num_rows) { // if user is logged in
$projects = array();
if ($result = $mysqli->query("SELECT projectName FROM projects WHERE projectUserID = '".$userID."'")) {
$placeholder = array();
while($row = $result->fetch_object()) {
$placeholder = $row;
array_push($projects, $placeholder);
}
$json = json_encode($projects);
$result = str_replace("projectName", "value", $json);
echo $result;
}
}
但据我所知,我需要以某种方式包含这个词吗?我能举一个例子吗?
更新2
if (!isset($_REQUEST['term']) )
exit;
$projects = array();
if ($result = $mysqli->query("SELECT projectName FROM projects WHERE projectName = '".$mysqli->real_escape_string($_REQUEST["term"])."'")) {
现在它不会全部归还。事实上,它会返回正确的一个,但只有在你完全拼出它之后才会失效。
答案 0 :(得分:4)
有关我的评论的更多信息。请参阅自动填充文档。
http://api.jqueryui.com/autocomplete/#option-source
这是关键部分,强调我的。
字符串:使用字符串时,自动完成插件希望该字符串指向将返回JSON数据的URL资源。它可以位于同一主机上,也可以位于不同的主机上(必须提供JSONP)。 自动完成插件不会过滤结果,而是添加一个查询字符串,其中包含一个术语字段,服务器端脚本应使用该字段来过滤结果。例如,如果源选项设置为“http://example.com”和用户输入foo,将向http://example.com?term=foo发出GET请求。数据本身的格式与上述本地数据的格式相同。