【发布时间】:2014-05-28 23:07:04
【问题描述】:
我正在尝试使用 jQuery 自动完成来显示我的新闻标题,同时我在搜索表单上写字。
但是我遇到了一个问题,当我在搜索输入中写入时,什么都没有出现。
我有我的 header.php 文件,我有这个脚本来启动 jQuery 自动完成:
$(function(){
$('.j_autocomplete').autocomplete({
source: "search.php",
});
});
我的 header.php 中还有一个带有搜索表单的菜单:
<nav id="menu">
<ul>
<li><a href="">Home</a></li>
.....
<li>
<form id="search">
<input name="search" class="j_autocomplete" type="text" placeholder="Search..." />
<button type="submit">Search</button>
</form>
</li>
</ul>
然后我有我的来源,即我的 search.php 文件,我在其中选择我的新闻标题以显示在我的 jQuery 自动完成上:
<?php
$search= $_GET['term'];
$readNews = $pdo->prepare("SELECT * from news WHERE title LIKE ? ORDER BY title ASC");
$readNews->bindValue(1, "%$search%", PDO::PARAM_STR);
$readNews->execute();
$resJson = '[';
$first = true;
while($res = $readNews->fetch(PDO::FETCH_ASSOC))
{
if(!$first)
{
$resJson .= ', ';
}
else
{
$first = false;
}
$resJson .= json_encode($res['title']);
}
$resJson .= ']';
echo $resJson;
?>
对我来说一切都很好,如果在我的 search.php 文件中我只在下面放了这段代码,当我开始在我的自动完成中写入时,我会得到所有这 4 个名称, 所以看来我的来源也是正确的:
<?php
$result = array("Henry","Tom","Terry","Chris");
echo json_encode($result);
?>
您知道我的错误可能在哪里吗?
在自动完成文档中说“术语”是要使用的查询字符串键,但是
我怀疑这是关于我的$_GET['term'] 无法正常工作的问题,但我已经用$_REQUEST['term'] 进行了测试并且也无法正常工作!
【问题讨论】:
-
$pdo来自哪里?$readNews->execute();执行成功了吗?您的控制台中是否出现任何错误? -
是的执行,如果我访问我的 localhost/project/search.php ,我得到这个:注意:未定义的索引:术语,我得到我的表新闻的所有 5 个标题:“[\”标题1\\u00f3\",\"标题 2\\u00e9\",\"标题 3\",\"标题 4\",\"标题 5\"]"
-
你用什么浏览器?
-
我正在使用谷歌浏览器!
-
var_dump 在我的 search.php 文件中给出:array(1) { ["url"]=> string(6) "search" } array(0) { }
标签: php jquery jquery-plugins autocomplete