<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    waysun一路陽光

    不輕易服輸,不輕言放棄.--心是夢的舞臺,心有多大,舞臺有多大。踏踏實實做事,認認真真做人。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
      167 隨筆 :: 1 文章 :: 64 評論 :: 0 Trackbacks
    轉自:http://hi.baidu.com/mahaibao/blog/item/cf38b1546103011e3b2935c3.html

    最近和朋友們一起做了一個搜索提示的功能    使用了ajax+mysql數據庫進行的操作,代碼貼出來給大家參考一下:

    suggest.html:

    <html>
    <head>
        <style type="text/css" media="screen">
         body {
          font: 11px arial;
         }
         .suggest_link {
          background-color: #FFFFFF;
          padding: 2px 6px 2px 6px;
         }
         .suggest_link_over {
          background-color: #E8F2FE;
          padding: 2px 6px 2px 6px;
         }
         #search_suggest {
             position: absolute;
          background-color: #FFFFFF;
          text-align: left;
          border: 1px solid #000000;   
         }  
        </style>
        <script language="JavaScript" type="text/javascript" src="ajax_search.js"></script>
    </head>
    <body>
        <h3>Simple AJAX Search Suggest</h3>
        <div style="width: 500px;">
         <form id="frmSearch" action="">
    <input type="text" id="txtSearch" name="txtSearch" alt="Search Criteria" onkeyup="searchSuggest();" autocomplete="off" />
        <input type="submit" id="cmdSearch" name="cmdSearch" value="Search" alt="Run Search" /><br />
        <div id="search_suggest">
          </div>
         </form>
        </div>
    </body>
    </html>

     

    ajax_search.js文件:


    //Gets the browser specific XmlHttpRequest Object
    function getXmlHttpRequestObject() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else if(window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        alert("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
    }
    }
    function createAjaxObj(){
        var httprequest=false
        if (window.XMLHttpRequest)
        { // if Mozilla, Safari etc
          httprequest=new XMLHttpRequest()
          if (httprequest.overrideMimeType)
            httprequest.overrideMimeType('text/xml')
         }
         else if (window.ActiveXObject)
         { // if IE
           try {
             httprequest=new ActiveXObject("Msxml2.XMLHTTP");
           }
           catch (e){
             try{
                httprequest=new ActiveXObject("Microsoft.XMLHTTP");
             }
             catch (e){}
           }
         }
         return httprequest
    }
    //Our XmlHttpRequest object to get the auto suggest
    var searchReq = createAjaxObj();

    //Called from keyup on the search textbox.
    //Starts the AJAX request.
    function searchSuggest() {
    if (searchReq.readyState == 4 || searchReq.readyState == 0) {
        var str = escape(document.getElementById('txtSearch').value);
        searchReq.open("GET", 'search?search=' + str, true);
        searchReq.onreadystatechange = handleSearchSuggest;
        searchReq.send(null);
    }  
    }

    //Called when the AJAX response is returned.
    function handleSearchSuggest() {
    if (searchReq.readyState == 4) {
        var ss = document.getElementById('search_suggest')
        ss.innerHTML = '';
        var str = searchReq.responseText.split("\n");
        for(i=0; i < str.length - 1; i++) {
         //Build our element string.    This is cleaner using the DOM, but
         //IE doesn't support dynamically added attributes.
         var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
         suggest += 'onmouseout="javascript:suggestOut(this);" ';
         suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
         suggest += 'class="suggest_link">' + str[i] + '</div>';
         ss.innerHTML += suggest;
        }
    }
    }

    //Mouse over function
    function suggestOver(div_value) {
    div_value.className = 'suggest_link_over';
    }
    //Mouse out function
    function suggestOut(div_value) {
    div_value.className = 'suggest_link';
    }
    //Click function
    function setSearch(value) {
    document.getElementById('txtSearch').value = value;
    document.getElementById('search_suggest').innerHTML = '';
    }

     

    數據庫的代碼:


    CREATE DATABASE /*!32312 IF NOT EXISTS*/ search;
    USE search;


    DROP TABLE IF EXISTS SUGGEST;
    CREATE TABLE SUGGEST (
        SUGGEST_ID int(11) NOT NULL auto_increment,
        TITLE varchar(255) default NULL,
        PRIMARY KEY    (SUGGEST_ID)
    )TYPE=MyISAM ;

    LOCK TABLES SUGGEST WRITE;
    INSERT INTO SUGGEST VALUES (1,'Home'),(2,'TECHNOLOGIES'),(3,'SOLUTIONS    AND SOFTWARE'),(4,'Websites'),(5,'Web Apps'),(6,'Applications'),(7,'E-COMMERCE SOLUTIONS'),(8,'osCommerce'),(9,'CMS / Portals'),(10,'Microsoft .NET'),(11,'J2EE'),(12,'LAMP'),(13,'PHP'),(14,'MySQL'),(15,'Apache'),(16,'ASP.NET'),(17,'Windows Applications'),(18,'JSP'),(19,'SWING'),(20,'Web Technologies'),(21,'XHTML'),(22,'RSS / ATOM'),(23,'XML'),(24,'XSL'),(25,'XAML'),(26,'AJAX'),(27,'About DynamicAJAX'),(28,'CSS'),(29,'The Basics'),(30,'SAJAX'),(31,'About The Site Images'),(32,'About Me'),(33,'JavaScript'),(34,'RSS 2.0'),(35,'ATOM 1.0'),(36,'Search Engine Optimization'),(37,'Flash'),(38,'Open Source'),(39,'HTTP Server'),(40,'Full Text Search'),(41,'Best Practices'),(42,'XML Schema Definitons'),(43,'Web Content Accessibility Guidelines'),(44,'Printable Pages'),(45,'Search Engine'),(46,'Navigation'),(47,'Direct Web Remoting'),(48,'Mars Exploration Rovers'),(49,'Cassini'),(50,'Fun with Queries'),(51,'SEO Tricks and Tactics'),(52,'osCommerce Contributions'),(53,'PHP & IIS'),(54,'Regular Expressions'),(55,'Rants'),(56,'URL Rewrite'),(57,'Fun with CSS'),(58,'ActionScript'),(59,'Visual Studio 2005'),(60,'SQL Server'),(61,'Search Engine Commands'),(62,'Web Site Layout'),(63,'AJAX'),(64,'AJAX Basics'),(65,'ATLAS'),(66,'SAJAX'),(67,'Tutorials'),(68,'Novice'),(69,'Frameworks'),(70,'Ajax.NET'),(71,'Framework Tutorials'),(72,'SAJAX'),(73,'Ajax.NET'),(74,'Direct Web Remoting'),(75,'Intermediate'),(76,'AJAX Example Sites'),(77,'My Tutorials'),(78,'AJAX Web Chat Part 1'),(79,'The JavaScript'),(80,'Sending The Request'),(81,'Color Schemes'),(82,'AJAX Resources'),(83,'The Backend'),(84,'Usability Additions'),(85,'AJAX Instant Messenger Part 1'),(86,'Ruby on Rails'),(87,'Crazy Queries'),(88,'XmlHttpRequest Methods'),(89,'XmlHttpRequest Properties'),(90,'AjaxTags'),(91,'Direct Web Remoting'),(92,'My URL Rewriting'),(93,'Great Quotes'),(94,'IXSSO Queries'),(95,'AFLAX'),(96,'Other Technologies'),(97,'Microsoft Indexing Server'),(98,'.NET & CISSO');
    UNLOCK TABLES;

    SearchSuggest.java:

    package book.suggest;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Vector;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class SearchSuggest extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, java.io.IOException {
        String search = request.getParameter("search");//獲得請求中cate的值
        //定義查詢數據庫的SQL語句
        String sql = "select title from suggest where title like '"+search+"%' order by title";

        Connection conn = null;//聲明Connection對象
        Statement stmt = null;//聲明Statement對象
        ResultSet rs = null;//聲明ResultSet對象
        Vector vData = new Vector();
        //response.setContentType("text/xml");//設置返回數據類型為xml格式
        java.io.PrintWriter out = response.getWriter();

        try {
         // 加載數據庫驅動類
         Class.forName("com.mysql.jdbc.Driver");
         // 訪問數據庫的地址
         String url = "jdbc:mysql://localhost/search";
         //創建Connection對象
         conn = DriverManager.getConnection(url, "root", "");
         // 創建Statement對象
         stmt = conn.createStatement();
         // 執行SQL語句,返回記錄集
         rs = stmt.executeQuery(sql);
         //定義AblumEO實體對象
         while (rs.next())
         {
          vData.add(rs.getString("TITLE"));
         }
         StringBuffer buf = new StringBuffer();
         for (int i=0;i<vData.size();i++)
         {
          String keyword = (String)vData.get(i);
          buf.append(keyword+"\n");
         }
         out.print(buf.toString());
    //     out.print(parasToXML(vData));//調用parasToXML()方法
        } catch (Exception e) {

         e.printStackTrace();

        } finally {//最后關必記錄集,Connection對象
         try {
          // this will close any associated ResultSets
          if (stmt != null)
           stmt.close();
          if (conn != null)
           conn.close();
         } catch (SQLException sqle) {
         }
        }
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, java.io.IOException {

        doPost(request, response);
    }
    /*
    public String parasToXML(Vector v) {// 該方法將數據轉化成XML格式輸出
        StringBuffer buf = new StringBuffer();
        buf.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
        buf.append("<pictures>");
        for (int i = 0; i < v.size(); i++) {
         AlbumEO album = (AlbumEO) v.get(i);
         buf.append("<item>");
         buf.append("<name>" + album.getAlbumName() + "</name>");
         buf.append("<url>" + album.getAlbumURL() + "</url>");
         buf.append("<description>" + album.getAlbumDescription()
           + "</description>");
         buf.append("</item>");
        }
        buf.append("</pictures>");
        return buf.toString();
    }
    */
    }

     

    本示例共有 四部分,請大家復制到自己的文件中進行 運行,最后的結果如圖:

    posted on 2008-08-05 15:56 weesun一米陽光 閱讀(794) 評論(0)  編輯  收藏 所屬分類: AJAX總結備用
    主站蜘蛛池模板: 亚洲欧洲日本精品| 亚洲福利在线视频| 精品国产成人亚洲午夜福利| 99免费在线观看视频| 亚洲AV无码日韩AV无码导航| 青青操视频在线免费观看| 亚洲精品国精品久久99热| 免费手机在线看片| 亚洲精品偷拍视频免费观看| 美女隐私免费视频看| 亚洲av手机在线观看| 国产AV无码专区亚洲AV琪琪| 免费a级毛片无码av| 性生大片视频免费观看一级| 奇米影视亚洲春色| 国产成人免费视频| 亚洲国产日韩在线成人蜜芽 | 亚洲国产精品无码av| 中文字幕高清免费不卡视频| 久久被窝电影亚洲爽爽爽 | 亚洲av成人一区二区三区在线播放| 午夜dj在线观看免费视频| 男女猛烈xx00免费视频试看| 亚洲免费一区二区| 国产白丝无码免费视频| 亚洲а∨天堂久久精品9966| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 国产成人精品日本亚洲语音| 亚洲人成国产精品无码| 无码日韩精品一区二区免费暖暖| 亚洲无人区视频大全| 国产成人高清精品免费软件| 国产线视频精品免费观看视频| 亚洲精品在线免费观看视频| 免费看AV毛片一区二区三区| 亚洲精品国产日韩无码AV永久免费网| 亚洲另类激情综合偷自拍| 精品久久久久久久免费人妻| 中文字幕无线码中文字幕免费 | 久久精品亚洲一区二区三区浴池| a级毛片无码免费真人|