亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

用AJAX技術做Google Suggest效果

2024-09-01 08:26:02
字體:
來源:轉載
供稿:網友

原文地址: http://cceer.xmu.edu.cn/blog/view.asp?id=55

*項目名稱: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://finish.3322.org/suggest/index.htm(短期有效,在本機上,可能訪問不順暢)
*:文件結構:
  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,其他的去附件下載:
草履蟲--仿googlesuggest.rar
首頁:index.htm

<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="gb2312">
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<title>草履蟲---簡易google suggest</title>
  <link type="text/css" rel="stylesheet" href="suggest.css"/>
  <script type="text/javascript" src="suggest.js"></script>
</head>
<body onclick="hide_suggest();">
  <img src="suggest.gif" onclick="hide_suggest();" />
  <form action="result.asp" method="post" name="search" autocomplete="off">
    <!--input type="text" name="keyword" id="keyword" onkeyup="keydeal(event);" onclick="keydeal(event);"/-->
    <input type="text" name="keyword" id="keyword" onkeyup="keyupdeal(event);" onkeydown="keydowndeal(event);" onclick="keyupdeal(event);"/>
    <input type="submit" value="手氣不錯"/>
    <div id="suggest"></div>
  </form>
</body>
</html>
suggest.js view plaincopy to clipboardprint?
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;  
        }  
    }  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美理论电影在线播放| 亚洲电影在线观看| 亚洲国产精品va在看黑人| 日韩有码在线观看| 久久理论片午夜琪琪电影网| 久久久久久91香蕉国产| 精品中文字幕在线| 色悠久久久久综合先锋影音下载| 欧美日韩高清在线观看| 91久久久在线| 色婷婷**av毛片一区| 亚洲欧美日韩精品久久奇米色影视| 国产亚洲欧美另类中文| 色yeye香蕉凹凸一区二区av| 日韩免费观看高清| 久久久999精品视频| 亚洲乱码av中文一区二区| 欧美美女操人视频| 久久久久久国产精品三级玉女聊斋| 欧美xxxx综合视频| 欧美精品videosex极品1| 欧美日韩精品在线观看| 亚洲欧美日韩精品| 欧美视频在线观看免费网址| 欧美中文在线观看国产| 国产激情综合五月久久| 精品亚洲精品福利线在观看| 欧美国产视频日韩| 97欧美精品一区二区三区| 国产精品三级在线| 亚洲精品一区二区三区婷婷月| 国产精品一香蕉国产线看观看| 亚洲欧美综合另类中字| 亚洲午夜激情免费视频| 国产亚洲精品美女久久久久| 精品少妇一区二区30p| 精品在线观看国产| 久久亚洲精品网站| 久久久成人的性感天堂| 欧美精品成人在线| 17婷婷久久www| 中文字幕亚洲一区二区三区五十路| 国产精品一久久香蕉国产线看观看| 九九精品在线视频| 成人精品久久一区二区三区| 国产在线观看91精品一区| 91精品国产乱码久久久久久蜜臀| 久久青草福利网站| 伦理中文字幕亚洲| 欧美夫妻性生活xx| 国产欧美亚洲精品| 美女av一区二区| 久久人人爽人人爽人人片av高请| 国产视频亚洲精品| 久久精品久久久久电影| 欧美日韩国产综合新一区| 欧美国产日产韩国视频| 国产一区二区久久精品| 国产91精品久久久久久久| 日韩欧美国产视频| 亚洲成人激情图| 中文字幕欧美国内| 91av中文字幕| 欧美国产极速在线| 伊人久久久久久久久久久久久| 日本道色综合久久影院| 国产亚洲精品激情久久| 成人性生交大片免费看小说| 欧美成年人视频网站| 亚洲综合最新在线| 97超级碰碰碰久久久| 九九热99久久久国产盗摄| 91av在线免费观看| 97国产精品久久| 日韩一区二区av| 国产精品色婷婷视频| 日韩精品久久久久久久玫瑰园| 久久久久九九九九| 国产91热爆ts人妖在线| 日韩精品中文字幕视频在线| 欧美黑人极品猛少妇色xxxxx| 国产精品国模在线| 欧美日韩国产成人| 欧美一区在线直播| 国产成人小视频在线观看| 91丝袜美腿美女视频网站| 国产精品日本精品| 亚洲成人av片| 日韩精品高清在线| 国产成人精品电影久久久| 亚洲精品一区二区久| 久久99国产精品久久久久久久久| 国外成人免费在线播放| 日韩精品视频在线免费观看| 国产欧美亚洲精品| 日韩激情视频在线播放| 欧美电影电视剧在线观看| 国产精品欧美日韩一区二区| 亚洲资源在线看| 亚洲第一精品电影| 性欧美长视频免费观看不卡| 亚洲网在线观看| 中文字幕亚洲欧美在线| 91国产一区在线| 91久久精品日日躁夜夜躁国产| 成人免费视频网| 久久精品国产一区| 亚洲人成在线一二| 久久精品精品电影网| 国产精品激情av电影在线观看| 一区二区三区回区在观看免费视频| 久久久久久亚洲| 欧美亚洲国产另类| 欧美午夜视频一区二区| 最新国产精品拍自在线播放| 欧美午夜片欧美片在线观看| 精品免费在线视频| 国产成人免费91av在线| 亚洲福利视频二区| 日韩成人在线视频观看| 久久影视电视剧免费网站| 日韩一区av在线| 久久人体大胆视频| 亚洲电影免费观看高清完整版在线观看| 国产亚洲精品久久久优势| 久久精品一本久久99精品| 伊人久久大香线蕉av一区二区| 国产精品白嫩初高中害羞小美女| 91久久精品一区| 国产成人精品一区二区三区| 伊人久久久久久久久久久| 国产91精品黑色丝袜高跟鞋| 欧美黑人又粗大| 国产精品网址在线| 欧美大成色www永久网站婷| 日韩av一卡二卡| 在线观看国产精品淫| 综合欧美国产视频二区| 668精品在线视频| 亚洲欧美中文另类| 欧美精品少妇videofree| 欧美激情xxxxx| 九九精品在线视频| 国产成人精品av| 久久国产精品亚洲| 亚洲欧洲日产国码av系列天堂| 日本久久亚洲电影| 国产日韩中文在线| 国产亚洲视频在线| 久久久精品国产| 欧美日韩亚洲一区二区三区| 午夜精品久久久久久99热软件| 亚洲国产日韩欧美综合久久| 欧美亚洲日本黄色| 日韩精品中文字幕在线观看| 午夜免费日韩视频| 91精品久久久久久久久不口人| 久久精品中文字幕电影| 91青草视频久久| 国产99久久精品一区二区永久免费| 亚洲国产精品电影| 久久久久999| 精品视频偷偷看在线观看| 丝袜亚洲另类欧美重口|