waysun一路陽光

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

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

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

          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 = '';
          }

           

          數(shù)據(jù)庫的代碼:


          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的值
              //定義查詢數(shù)據(jù)庫的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");//設(shè)置返回?cái)?shù)據(jù)類型為xml格式
              java.io.PrintWriter out = response.getWriter();

              try {
               // 加載數(shù)據(jù)庫驅(qū)動(dòng)類
               Class.forName("com.mysql.jdbc.Driver");
               // 訪問數(shù)據(jù)庫的地址
               String url = "jdbc:mysql://localhost/search";
               //創(chuàng)建Connection對象
               conn = DriverManager.getConnection(url, "root", "");
               // 創(chuàng)建Statement對象
               stmt = conn.createStatement();
               // 執(zhí)行SQL語句,返回記錄集
               rs = stmt.executeQuery(sql);
               //定義AblumEO實(shí)體對象
               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));//調(diào)用parasToXML()方法
              } catch (Exception e) {

               e.printStackTrace();

              } finally {//最后關(guān)必記錄集,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) {// 該方法將數(shù)據(jù)轉(zhuǎn)化成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();
          }
          */
          }

           

          本示例共有 四部分,請大家復(fù)制到自己的文件中進(jìn)行 運(yùn)行,最后的結(jié)果如圖:

          posted on 2008-08-05 15:56 weesun一米陽光 閱讀(800) 評論(0)  編輯  收藏 所屬分類: AJAX總結(jié)備用
          主站蜘蛛池模板: 桃园市| 库尔勒市| 张家口市| 大足县| 龙泉市| 浑源县| 惠水县| 延边| 天全县| 山阳县| 舒兰市| 永丰县| 株洲县| 合川市| 波密县| 稻城县| 璧山县| 惠来县| 保山市| 合川市| 新邵县| 龙南县| 涿鹿县| 德格县| 平谷区| 普安县| 方城县| 宣化县| 苍溪县| 瑞昌市| 喀什市| 天柱县| 延寿县| 确山县| 丰台区| 虹口区| 新化县| 连州市| 西安市| 堆龙德庆县| 通山县|