Php AJAX表单自动填充建议
我正在尝试创建一个html表单,它使用AJAX从mysql数据库中加载数据库条目作为用户类型,因此它会向用户建议这些条目 我对AJAX还不熟悉,对于经验丰富的人来说,这可能非常简单 我有以下html文本输入:Php AJAX表单自动填充建议,php,ajax,json,jquery,Php,Ajax,Json,Jquery,我正在尝试创建一个html表单,它使用AJAX从mysql数据库中加载数据库条目作为用户类型,因此它会向用户建议这些条目 我对AJAX还不熟悉,对于经验丰富的人来说,这可能非常简单 我有以下html文本输入: <form> <input type="text" id="f" /> </form> 这就完成了我的工作,但我想知道: 1) 我是否使用了任何不良做法 2) 有没有更智能的方法将数据从php脚本传递到jQuery脚本 3) 在html中,我
<form>
<input type="text" id="f" />
</form>
这就完成了我的工作,但我想知道:
1) 我是否使用了任何不良做法
2) 有没有更智能的方法将数据从php脚本传递到jQuery脚本
3) 在html中,我可以使用什么标记向用户显示建议?一个带有onclick函数的p来填充表单,或者有更好的吗?我喜欢实现,你可以使用整个html/css/js包,或者只“窃取”html,或者只是阅读代码来获得一些灵感。我会担心调用太多ajax。很可能有人打字很快。因此,如果我键入“abc”,那么您将进行3次ajax调用。很多开销。但是,如果您希望在发送之前实现一个延迟,比如300毫秒,那么脚本将在返回结果之前等待暂停 我发现一个短暂的(真的不明显的)延迟比建议中的闪烁要好
也可以考虑将此发布到CoDeVIEW(StAdvExcel的同伴站点)上。它更适合回答像这样的问题
以下是我所指的一个未经测试的例子:$(function(){
var timer;
var getSuggestions = function() {
$.ajax({
url: 'getit.php',
dataType: 'json',
data: {'data' : $('#f').value},
success: function(response){
for(var i = 0; i < (response.rows*2); i = i+2){
alert('The name is ' + response[i] + ' ' + response[i+1])
}
}
})
});
$('#f').keyup(function() {
clearTimeout(timer);
timer = setTimeout(getSuggestions, 300);
});
});
$(函数(){
无功定时器;
var getSuggestions=function(){
$.ajax({
url:'getit.php',
数据类型:“json”,
数据:{'data':$('f').value},
成功:功能(响应){
对于(变量i=0;i<(响应行*2);i=i+2){
警报('名称为'+response[i]+''+response[i+1])
}
}
})
});
$('#f').keyup(函数(){
清除超时(计时器);
定时器=设置超时(getSuggestions,300);
});
});
如果您使用的是Twitter引导程序Typeahead,请务必查看以下内容
(链接自)
基本上,它将一个keyup事件绑定到typeahead字段,该字段反过来进行AJAX调用,动态填充typeahead源。这一切都是在不修改Typeahead核心的情况下完成的
还有一个Twitter引导程序“Combobox”漂浮在周围。我不会链接到它,因为我最终使用了要点中的解决方案,但是如果您愿意,您可以自己搜索它。看看jQuery UI Autocomplete:哦,为了回答您的问题:1)不是真的,如果我从头开始实现Autocomplete,我基本上也会这样做。2) 同样,从头开始构建,您使用的方法看起来非常简单。3) 因为您返回的是一个建议列表,
//connect to database
//get variables an sanitize
$parameter = $_GET['data'];
$parameter = mysql_real_escape_string( $parameter );
//prepare and run query
$query = "SELECT email , surname , address FROM users WHERE email LIKE '$parameter%'";
$result = mysql_query($query);
//start preparing response
$seires = mysql_num_rows($result);
$response = array('rows'=>$seires);
while($row = mysql_fetch_array( $result ) ) {
array_push( &$response , $row['onoma'] , $row['epwnimo'] );
}
echo json_encode($response);
$(function(){
var timer;
var getSuggestions = function() {
$.ajax({
url: 'getit.php',
dataType: 'json',
data: {'data' : $('#f').value},
success: function(response){
for(var i = 0; i < (response.rows*2); i = i+2){
alert('The name is ' + response[i] + ' ' + response[i+1])
}
}
})
});
$('#f').keyup(function() {
clearTimeout(timer);
timer = setTimeout(getSuggestions, 300);
});
});