`
feng5588feng
  • 浏览: 12505 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

AJAX实现仿Google Suggest搜索提示效果

阅读更多
项目名称:AJAX实现类Google Suggest效果

作者:草履虫

联系:caolvchong@gmail.com

时间:2007-7-7

起因:

建发实习面试时有提到这个问题,回来就考虑去实践一下,结果花了不少时间.主要是javascript在前台的表现问题,数据库结构设计等.网上有少数的几个dom教程,没有值得借鉴的地方,而<<征服Ajax web2.0开发技术详解>>中第16章 搜索提示(suggest)中那个例子实在是简陋(当然是说javascript表现部分),而且数据库用MSSQL,后台语言用JSP,和自己熟悉的格格不入(虽然都是以后要接触的),所以自己动手了.模仿效果:Google Suggest

开发平台:windows2003 IIS6.0 Access数据库

工具:DreamWeaver(写ASP),Aptana(写Javascript,HTML和CSS),Emeditor(写这篇文章),Access2003(数据库)

测试平台:Firefox2.0,IE6.0,IE7.0

原文地址:http://cceer.xmu.edu.cn/blog/post/googlesuggest.html

文件结构:  index.htm:首页,展现效果, ajax_result.asp:ajax调用后台返回结果文件

result.asp:搜索结果文件,这个我并没有做,具体功能根据需求来写

数据库(suggest.mdb):
    id:自动编号
    keyword:关键字
    seachtimes:被搜索次数
    matchnum:匹配的文章数目(关于这个方面想了蛮久,如何取得文章数呢,不能是搜索时动态产生,不然在偌大数据库中查询费时费力.那么必然是在后台某个时候去其他的数据库表中添加的,原来想把这方面也做了,但限于算法的不成熟和时间的限制.所以就用了随机数来替换.)

开发过程遇到问题:

1.CSS方面:遇到了IE双倍浮动边界Bug(float:left下的margin-left是设置的两倍,用display:inline消除)

2.javascript方面:

  一个是那个全局变量j的上下界问题着实让我乱了一会,还好理清了思路;按键事件的兼容性问题:IE的keyCode,其他浏览器的which事件;onkeypress和onkeyup,onkeydown事件的区别:onkeypress只接受数字和字母,不接受系统按键(如上下方向键)

使用submit()方法时不能定义某个标签的id或name为submit,不然将提示缺少对象。 还有一些细节判断问题,也让我费了不少神。

3.html方面:

如何让表单不记忆(在firefox下自动记忆会挡主ajax部分,而google中就没有这样的提示功能,所以去掉了表单记忆功能),只要在form中加一个autocomplete="off"

补充:

和google suggest还有一些差距,比如一直按着方向键问题和其他细节问题,这些都有待改进.
演示效果图:

主要js代码,suggest.js:

var j=-1;  
var temp_str;  
var $=function(node){  
    return document.getElementById(node);  
}  
var $$=function(node){  
    return document.getElementsByTagName(node);  
}  
function ajax_keyword(){  
    var xmlhttp;  
    try{  
        xmlhttp=new XMLHttpRequest();  
        }  
    catch(e){  
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  
        }  
    xmlhttp.onreadystatechange=function(){  
    if (xmlhttp.readyState==4){  
        if (xmlhttp.status==200){  
            var data=xmlhttp.responseText;  
            $("suggest").innerHTML=data;  
            j=-1;  
            }  
        }  
    }  
    xmlhttp.open("post", "ajax_result.asp", true);  
    xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');  
    xmlhttp.send("keyword="+escape($("keyword").value));  
}  
function keyupdeal(e){  
    var keyc;  
    if(window.event){  
        keyc=e.keyCode;  
        }  
    else if(e.which){  
        keyc=e.which;  
        }  
    if(keyc!=40 && keyc!=38){  
        ajax_keyword();  
        temp_str=$("keyword").value;  
    }  
    }  
 
function set_style(num){  
    for(var i=0;i<$$("li").length;i++){  
        var li_node=$$("li")[i];  
        li_node.className="";  
    }  
    if(j>=0 && j<$$("li").length){  
        var i_node=$$("li")[j];  
        $$("li")[j].className="select";  
        }  
    }  
function mo(nodevalue){  
    j=nodevalue;  
    set_style(j);  
}  
function form_submit(){  
    if(j>=0 && j<$$("li").length){  
        $$("input")[0].value=$$("li")[j].childNodes[0].nodeValue;  
        }  
    document.search.submit();  
}  
function hide_suggest(){  
    var nodes=document.body.childNodes  
    for(var i=0;i<NODES.LENGTH;I++){ if(j j++; if(j<$$(?li?).length){ if(keyc="=40" keyc="e.keyCode;" || } if(e.which){ else if(window.event){ keyc; var keydowndeal(e){ function ; $(?suggest?).innerHTML="" if(nodes[i]!='$("keyword")){'>=$$("li").length){  
                j=-1;  
            }  
        }  
        if(j>=$$("li").length){  
                j=-1;  
            }  
    }  
    if(keyc==38){  
        if(j>=0){  
            j--;  
            if(j<=-1){  
                j=$$("li").length;  
            }  
        }  
        else{  
            j=$$("li").length-1;  
        }  
    }  
    set_style(j);  
    if(j>=0 && j<$$("li").length){  
        $("keyword").value=$$("li")[j].childNodes[0].nodeValue;  
        }  
    else{  
        $("keyword").value=temp_str;  
        }  
    }  


分享到:
评论

相关推荐

    搜索提示仿google suggest提示效果

    AJAX实现类Google Suggest效果 *测试平台:Firefox2.0,IE6.0,IE7.0 *演示地址:http://www.okajax.com/demo/suggest/ *:文件结构: index.htm:首页,展现效果 ajax_result.asp:ajax调用后台返回结果文件 result.asp:...

    仿Google Suggest提示效果

    【标题】"仿Google Suggest提示效果"是一个关于在网页中实现类似Google搜索框自动提示功能的技术分享。这种功能在现代网页应用中非常常见,它能够提升用户体验,帮助用户更快地找到他们想要输入的关键词。 【描述】...

    仿GoogleSuggest自动补全的功能

    本教程将详细讲解如何实现一个仿GoogleSuggest的自动补全功能,旨在提供一个绝对实用的解决方案。 首先,理解GoogleSuggest的工作原理至关重要。它基于用户在搜索框中输入的字符,实时从服务器端获取并展示可能的...

    google suggest 实现 ajax应用

    【标题】:Google Suggest 实现 AJAX 应用 在当今的Web开发中,AJAX(Asynchronous JavaScript and XML)技术被广泛应用于创建交互性更强、用户体验更佳的网页应用。本主题主要聚焦于如何使用ASP.NET框架实现一个...

    ajax实现google搜索提示

    在IT行业中,Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下更新部分...在提供的`GoogleSuggest`文件中,可能包含了示例代码或者更具体的实现细节,你可以参考这些内容进一步完善你的功能。

    servlet+ajax+mysql实现搜索提示

    servlet+ajax搜索提示。 仿Google Suggest,使用ajax技术实现动态获取搜索提示的功能,当输入搜索关键字时,自动向服务器发送请求,查询相关的关键字,并及时提示用户可输入的关键字。

    jsp+ajax实现googleSuggest(全)

    综上所述,"jsp+ajax实现googleSuggest(全)"项目涵盖了JSP、AJAX以及前端交互设计等多个技术点,通过它们的结合,可以实现类似Google搜索框的智能提示功能,提升用户体验。在实际开发中,还需要考虑性能优化、错误...

    简易Google Suggest搜索提示

    【简易Google Suggest搜索提示】是一种基于JavaScript实现的搜索引擎优化技术,它允许用户在输入查询时获取实时的搜索建议。这种技术提高了用户体验,因为它减少了用户输入完整查询词的时间,同时也帮助用户更快地...

    ajax Suggest类似google的搜索提示效果

    Ajax Suggest是一个功能强大的JavaScript框架,它允许开发者创建类似Google搜索提示的效果,即在用户输入关键词时,自动显示与输入匹配的相关建议。这种实时的交互性增强了用户体验,减少了用户寻找和输入完整信息的...

    GoogleSuggest ajax自动补全

    总之,"GoogleSuggest ajax自动补全"是一个使用AJAX和jQuery实现的搜索建议功能,它通过与Google的搜索建议API交互,为用户提供实时的搜索提示。提供的源代码可以帮助开发者深入了解这一功能的工作原理,并在其自己...

    Ajax仿Google搜索提示ASP+Access数据库版

    **Ajax仿Google搜索提示ASP+Access数据库版** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。Google Suggest是Google搜索引擎中的一个特性,它会在用户输入...

    suggest 仿google提示

    标题中的“suggest 仿google提示”指的是创建一个类似于Google搜索框自动补全的功能。这个功能在用户输入查询词时,会根据已有的数据提供相关的建议,以提高搜索效率和用户体验。这种技术通常被称为自动完成功能或者...

    类似google suggest 的搜索提示框

    标题中的“类似Google Suggest的搜索提示框”指的是在用户输入搜索关键词时,搜索引擎自动提供相关的建议词或短语,这种功能在许多网站上被广泛采用,以提高用户体验和搜索效率。Google Suggest是谷歌在其搜索框中...

    jQuery学习记录----仿GoogleSuggest自动提示(八)

    在本篇博客“jQuery学习记录----仿GoogleSuggest自动提示(八)”中,作者分享了如何使用jQuery实现一个类似于Google搜索框中的自动提示功能。这个功能是许多网站上常见的用户体验提升工具,它允许用户在输入关键词...

    基于Ajax的Google Suggest 开发

    Google Suggest正是利用了Ajax的核心特性,实现了在用户输入搜索关键词时,实时向服务器发送请求,获取相关建议,并在页面上动态展示。 在Google Suggest中,用户在搜索框中输入字符时,触发`onkeyup`事件,这是一...

    Ajax仿google信息提示

    以上就是使用Ajax实现仿Google信息提示的基本步骤。通过这种方式,我们可以实时地为用户提供搜索建议,提高用户在网站上的操作效率,提升整体的交互体验。在实际应用中,还可以根据需求进行更复杂的优化,比如添加...

    Google搜索提示功能

    在压缩包文件"简易Google Suggest搜索提示"中,可能包含了实现这一功能的源代码和示例数据。通过学习和理解这些代码,开发者可以为自己的网站或应用构建类似的搜索提示功能,提升用户的搜索体验。这涉及到前端的Ajax...

    仿google的搜索

    "仿google的搜索"是一个基于Ajax和Lucene技术的搜索功能实现,旨在提供与Google类似的实时搜索体验。在Google搜索中,用户在输入框中键入关键词时,系统会即时显示相关的搜索建议,这种功能极大地提高了用户的搜索...

    ajax实现输入提示(类似百度和Google的输入提示)

    ajax实现输入提示(类似百度和Google的输入提示) 用法非常简单: 1、在jsp页面引入autosuggest.js文件 2、建一个text文本框 3、写js代码: &lt;script&gt; new actb("tb", loadAllMessage("suggest" , ""), null); 4、这...

Global site tag (gtag.js) - Google Analytics