没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
大家都对Google的suggest的功能大概很有兴趣吧,我们觉得既然Google做的出,那么我们也能做出来,先对其进行分析,1.对于网页客户端的按键的动态变化,Ajax是最好的选择,
2.如果数据库的选择,则可以有多种选择得,BerkeleyDB, Derby甚至自己做个txt文本文件,把所需要的单词和result数目放在文本文件里都能够实现,但今天我们有了一个很好的索引工具Lucene。加上Lucene对我的吸引力,因此今天我们用上大炮,卸去鸟枪。开始我们的开发之路。
首先,我们先建立个demo的框架,我就做了个这样的一个html文件,用了一个form,一个 输入的文本框,一个多选项和一个确认按键。后面两个没什么好说的,主要是文本框的设计,我做了以下的定义,<input type="text" size=60 id="userid" name="q" autocomplete="off" onKeyUp="validate(event);"> 这样autocomplete=off指取消网页的cache,这样就不会弹出以前打过的字的窗口,造成混乱。onKeyUp是实现ajax的关键,相应键盘输入的操作。
其次,开始我们的Ajax了,顾名思义,Ajax指异步的javascript和xml. 我们的所有工作都会在javascript中完成,至于ajax原理,很多地方都有很详细的解释,这里就指列应用了。
validate(e){
var key=e.KeyCode; //获得输入的键值
//定义按键只对字母数字,空格,回车,Ins和del有效,可以避免一些无效的相应,并//转发url给servlet,那么我们只要等servlet返回xml就可以了
if (key>=48 && key<=90 || key==8 || key==32 || key== 45 || key==46){
var url = "LuceneSearch?id=" + encodeURI(idField.value);
req.open("GET", url, true);
req.onreadystatechange = processRequest;
2.如果数据库的选择,则可以有多种选择得,BerkeleyDB, Derby甚至自己做个txt文本文件,把所需要的单词和result数目放在文本文件里都能够实现,但今天我们有了一个很好的索引工具Lucene。加上Lucene对我的吸引力,因此今天我们用上大炮,卸去鸟枪。开始我们的开发之路。
首先,我们先建立个demo的框架,我就做了个这样的一个html文件,用了一个form,一个 输入的文本框,一个多选项和一个确认按键。后面两个没什么好说的,主要是文本框的设计,我做了以下的定义,<input type="text" size=60 id="userid" name="q" autocomplete="off" onKeyUp="validate(event);"> 这样autocomplete=off指取消网页的cache,这样就不会弹出以前打过的字的窗口,造成混乱。onKeyUp是实现ajax的关键,相应键盘输入的操作。
其次,开始我们的Ajax了,顾名思义,Ajax指异步的javascript和xml. 我们的所有工作都会在javascript中完成,至于ajax原理,很多地方都有很详细的解释,这里就指列应用了。
validate(e){
var key=e.KeyCode; //获得输入的键值
//定义按键只对字母数字,空格,回车,Ins和del有效,可以避免一些无效的相应,并//转发url给servlet,那么我们只要等servlet返回xml就可以了
if (key>=48 && key<=90 || key==8 || key==32 || key== 45 || key==46){
var url = "LuceneSearch?id=" + encodeURI(idField.value);
req.open("GET", url, true);
req.onreadystatechange = processRequest;
req.send(null);
}
}
这时,可以通过Ajax的3个req的请求进行向服务器发送,我们这里只要等待服务器返回的xml就可以了。
function processRequest(){
if(req.readyState==4){
if(req.status==200){
parseMessages();
}else{
clearTable();
}
}
}
这里我们通过返回的状态, 得到一个XmlHttp的readyState=4表示servlet的操作结束,status
=200则表示Http得到正常的返回,这时调用parseMessage()就可以对所得到的XmlHttp进行操作,
}
}
这时,可以通过Ajax的3个req的请求进行向服务器发送,我们这里只要等待服务器返回的xml就可以了。
function processRequest(){
if(req.readyState==4){
if(req.status==200){
parseMessages();
}else{
clearTable();
}
}
}
这里我们通过返回的状态, 得到一个XmlHttp的readyState=4表示servlet的操作结束,status
=200则表示Http得到正常的返回,这时调用parseMessage()就可以对所得到的XmlHttp进行操作,
剩余6页未读,继续阅读
资源评论
Mr_Jansen
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功