我通过enterPerson()动态地为输入标签添加html,然后调用onkeyup = changeOnType(this),它在回显$ auto中的结果autoInvit.php应该显示自动完成,但为什么我的autocomlete代码不起作用,实际数据显示是否我提醒它。任何人都可以帮帮我吗? 提前谢谢你:)
jquery和autocomplete的头文件:
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="//code.jquery.com/jquery-1.8.3.js"></script>
<script src="//code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
“main.php”中的自动填充:
<script>
function changeOnType(x){
$.post(
"autoInvit.php",
{
vals: $(x).val()
},
function(data){
$("#"+x.id).autocomplete( {source:"autoInvit.php" } );
//alert(data);
}
);
}
</script>
这是“invities.php”中动态html的php代码:
<?php
echo '<input class="e" type="email" id="email" onkeyup="changeOnType(this)" autocomplete="on" role="textbox" aria-autocomplete="list" aria-haspopup="true" />';
?>
这是我的php文件“autoInvit.php”,它回应了结果:
<?php
include("includes/connection.php");
$value = strip_tags($_POST['vals']);
$req = "SELECT email as name "
."FROM members "
."WHERE email LIKE '".$value."%' ";
$query = mysql_query($req);
while($row = mysql_fetch_array($query))
{
$results[] = $row['name'];
}
echo json_encode($results);
?>
请帮忙
答案 0 :(得分:0)
无需提出post
请求。 编辑:无需调用单独的函数或将侦听器附加到输入,只需注册自动完成插件即可。这需要在DOM准备好后调用,因此您需要将其包装在就绪函数中。这应该是您需要的所有JavaScript:
$(function() {
$("#"+x.id).autocomplete( {source:"autoInvit.php" } );
});
用户输入的内容将作为参数term
来自autocomplete的jQuery文档:
String:使用字符串时,Autocomplete插件需要这样做 string指向将返回JSON数据的URL资源。它可以 在同一主机上或在另一主机上(必须提供JSONP)。该 自动填充插件不会过滤结果,而是过滤查询 string添加了一个术语字段,服务器端脚本应该这样 用于过滤结果。例如,如果源选项是 设置为“http://example.com”,用户输入foo,即GET请求 将被http://example.com?term=foo。数据本身可以 格式与上述本地数据相同。
此外,在将内容从用户直接传递到数据库时,您需要小心。您可以自己打开SQL injection。