【发布时间】:2011-09-12 06:39:15
【问题描述】:
search.php
$text = $mysqli->$_POST['term'];
$query = "SELECT name FROM males WHERE name LIKE '%" . $text . "%' ORDER BY name ASC";
$result = $mysqli->query($query);
$json = '[';
$first = true;
while($row = $result->fetch_assoc())
{
if (!$first) { $json .= ','; } else { $first = false; }
$json .= '{"value":"'.$row['name'].'"}';
}
$json .= ']';
echo $json;
index.php
1) HTML
<body>
Text: <input type="text" id="autocomplete" />
</body>
2) jQuery
$( "#autocomplete" ).autocomplete({
source: function(request, response) {
$.ajax({ url: "http://localhost/testing/auto/search.php",
data: { term: $("#autocomplete").val()},
dataType: "json",
type: "POST",
success: function(data){
response(data);
}
});
},
minLength: 2
});
当我键入 2 个字母时,它会给出我数据库中的所有名称,即使这两个字母与任何名称都不匹配。
这是怎么发生的,我该如何解决?
【问题讨论】:
-
你的 json 看起来怎么样?您应该使用 json_encode 函数在 php 中生成 json
-
在我添加 json_encode 后仍然给我所有记录!
-
不,$text = $mysqli->$_POST['term'];
-
$mysqli->$_POST['term'] 是做什么的?我认为你应该有
$text = $_POST['term'];。这应该工作 -
@Rakesh,谢谢你现在没有这个“$mysqli->”
标签: php jquery mysql jquery-ui autocomplete