JAVA涂鴉
          關于JAVA的點點滴滴
          posts - 50,  comments - 689,  trackbacks - 0
          這個一個ajax的經典示例,也是ajax的長處所在。不多說了,下面來看代碼。

          項目結構圖:
          option1.jpg

          index.jsp:
          <%@?page?language="java"?contentType="text/html;?charset=utf-8"%>

          <html>
          ??
          <head>
          ????
          <title>My?JSP?'index.jsp'?starting?page</title>
          ????
          <meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8">
          ????
          <SCRIPT?type="text/javascript">
          ????????var?req;
          ????????window.onload
          =function(){
          ????????}
          ????????
          ????????function?Change_Select()
          ????????{
          ????????????var?zhi
          =document.getElementById('hero').value;
          ????????????var?url
          ="select?id="+escape(zhi);
          ????????????
          if(window.XMLHttpRequest)
          ????????????{
          ????????????????req
          =new?XMLHttpRequest();
          ????????????}
          else?if(window.ActiveXObject)
          ????????????{
          ????????????????req
          =new?ActiveXObject("Microsoft.XMLHTTP");
          ????????????}
          ????????????
          ????????????
          if(req)
          ????????????{
          ????????????????req.open(
          "GET",url,true);
          ????????????????req.onreadystatechange
          =callback;
          ????????????????req.send(
          null);
          ????????????}
          ????????}
          ????????
          ????????function?callback()
          ????????{
          ????????????
          if(req.readyState?==?4)
          ????????????{
          ????????????????
          if(req.status?==?200)
          ????????????????{
          ????????????????????parseMessage();
          ????????????????}
          else{
          ????????????????????alert(
          "Not?able?to?retrieve?description"+req.statusText);
          ????????????????}
          ????????????}
          ????????}
          ????????
          ????????function?parseMessage()
          ????????{
          ????????????var?xmlDoc
          =req.responseXML.documentElement;
          ????????????var?xSel
          =xmlDoc.getElementsByTagName('select');
          ????????????var?select_root
          =document.getElementById('skill');
          ????????????select_root.options.length
          =0;
          ????????????
          ????????????
          for(var?i=0;i<xSel.length;i++)
          ????????????{
          ????????????????var?xValue
          =xSel[i].childNodes[0].firstChild.nodeValue;
          ????????????????var?xText
          =xSel[i].childNodes[1].firstChild.nodeValue;
          ????????????????var?option
          =new?Option(xText,xValue);
          ????????????????
          try{
          ????????????????????select_root.add(option);
          ????????????????}
          catch(e){
          ????????????????}
          ????????????}
          ????????????
          ????????????
          ????????}
          ????
          </SCRIPT>
          ??
          </head>
          ??
          ??
          <body>
          ????
          <div?align="center">
          ????????
          <form?name="form1"?method="post"?action="">
          ????????????
          <TABLE?width="70%"?boder="0"?cellspacing="0">
          ????????????????
          <TR>
          ????????????????????
          <TD?align="center">Double?Select?Box</TD>
          ????????????????
          </TR>
          ????????????????
          <TR>
          ????????????????????
          <TD>
          ????????????????????????
          <SELECT?name="hero"?id="hero"?onChange="Change_Select()">
          ????????????????????????????
          <OPTION?value="0">Unbounded</OPTION>
          ????????????????????????????
          <OPTION?value="1">D.K.</OPTION>
          ????????????????????????????
          <OPTION?value="2">NEC.</OPTION>
          ????????????????????????????
          <OPTION?value="3">BOSS</OPTION>
          ????????????????????????
          </SELECT>
          ????????????????????????
          <SELECT?name="skill"?id="skill">
          ????????????????????????????
          <OPTION?value="0">Unbounded</OPTION>
          ????????????????????????
          </SELECT>
          ????????????????????
          </TD>
          ????????????????
          </TR>
          ????????????????
          <TR><td>&nbsp;</td></TR>
          ????????????
          </TABLE>
          ????????
          </form>
          ????
          </div>
          ??
          </body>
          </html>

          SelectServlet.java:
          package?com;

          import?java.io.IOException;
          import?java.io.PrintWriter;

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

          public?class?SelectServlet?extends?HttpServlet?{

          ????
          /**
          ?????*?Constructor?of?the?object.
          ?????
          */
          ????
          public?SelectServlet()?{
          ????????
          super();
          ????}

          ????
          /**
          ?????*?Destruction?of?the?servlet.?<br>
          ?????
          */
          ????
          public?void?destroy()?{
          ????????
          super.destroy();?//?Just?puts?"destroy"?string?in?log
          ????????
          //?Put?your?code?here
          ????}

          ????
          /**
          ?????*?The?doGet?method?of?the?servlet.?<br>
          ?????*
          ?????*?This?method?is?called?when?a?form?has?its?tag?value?method?equals?to?get.
          ?????*?
          ?????*?
          @param?request?the?request?send?by?the?client?to?the?server
          ?????*?
          @param?response?the?response?send?by?the?server?to?the?client
          ?????*?
          @throws?ServletException?if?an?error?occurred
          ?????*?
          @throws?IOException?if?an?error?occurred
          ?????
          */
          ????
          public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)
          ????????????
          throws?ServletException,?IOException?{
          ????????response.setContentType(
          "text/xml");
          ????????response.setHeader(
          "Cache-Control","no-cache");
          ????????
          ????????String?targetId
          =request.getParameter("id").toString();
          ????????String?xml_start
          ="<selects>";
          ????????String?xml_end
          ="</selects>";
          ????????String?xml
          ="";
          ????????
          if(targetId.equalsIgnoreCase("0")){
          ????????????xml
          ="<select><value>0</value><text>Unbounded</text></select>";
          ????????}
          else?if(targetId.equalsIgnoreCase("1")){
          ????????????xml
          ="<select><value>1</value><text>Mana?Burn</text></select>";
          ????????????xml?
          +="<select><value>2</value><text>Death?Coil</text></select>";
          ????????????xml?
          +="<select><value>3</value><text>Unholy?Aura</text></select>";
          ????????????xml?
          +="<select><value>4</value><text>Unholy?Fire</text></select>";
          ????????}
          else?if(targetId.equalsIgnoreCase("2")){
          ????????????xml
          ="<select><value>1</value><text>Corprxplode</text></select>";
          ????????????xml?
          +="<select><value>2</value><text>Raise?Dead</text></select>";
          ????????????xml?
          +="<select><value>3</value><text>Brilliance?Aura</text></select>";
          ????????????xml?
          +="<select><value>4</value><text>Aim?Aura</text></select>";
          ????????}
          else{
          ????????????xml
          ="<select><value>1</value><text>Rain?of?Chaos</text></select>";
          ????????????xml?
          +="<select><value>2</value><text>Finger?of?Death</text></select>";
          ????????????xml?
          +="<select><value>3</value><text>Bash</text></select>";
          ????????????xml?
          +="<select><value>4</value><text>Summon?Doom</text></select>";
          ????????}
          ????????String?last_xml
          =xml_start+xml+xml_end;
          ????????response.getWriter().write(last_xml);
          ????}

          ????
          /**
          ?????*?The?doPost?method?of?the?servlet.?<br>
          ?????*
          ?????*?This?method?is?called?when?a?form?has?its?tag?value?method?equals?to?post.
          ?????*?
          ?????*?
          @param?request?the?request?send?by?the?client?to?the?server
          ?????*?
          @param?response?the?response?send?by?the?server?to?the?client
          ?????*?
          @throws?ServletException?if?an?error?occurred
          ?????*?
          @throws?IOException?if?an?error?occurred
          ?????
          */
          ????
          public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)
          ????????????
          throws?ServletException,?IOException?{

          ????????doGet(request,response);
          ????}

          ????
          /**
          ?????*?Initialization?of?the?servlet.?<br>
          ?????*
          ?????*?
          @throws?ServletException?if?an?error?occure
          ?????
          */
          ????
          public?void?init()?throws?ServletException?{
          ????????
          //?Put?your?code?here
          ????}

          }

          web.xml:
          <?xml?version="1.0"?encoding="UTF-8"?>
          <web-app?version="2.4"?
          ????xmlns
          ="http://java.sun.com/xml/ns/j2ee"?
          ????xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"?
          ????xsi:schemaLocation
          ="http://java.sun.com/xml/ns/j2ee?
          ????http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
          ??<servlet>
          ????
          <servlet-name>SelectServlet</servlet-name>
          ????
          <servlet-class>com.SelectServlet</servlet-class>
          ??
          </servlet>

          ??
          <servlet-mapping>
          ????
          <servlet-name>SelectServlet</servlet-name>
          ????
          <url-pattern>/select</url-pattern>
          ??
          </servlet-mapping>
          ????
          ????
          <welcome-file-list>
          ????????
          <welcome-file>index.jsp</welcome-file>
          ????
          </welcome-file-list>
          </web-app>

          運行結果圖:
          option2.jpg
          posted on 2006-05-17 11:10 千山鳥飛絕 閱讀(24012) 評論(25)  編輯  收藏 所屬分類: Ajax

          FeedBack:
          # re: Ajax實現二級聯動下拉框
          2006-10-16 17:36 | yam
          好東西
          謝謝  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2006-11-20 09:48 | 孤枕
          試了。效果不錯。  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2006-12-08 11:05 | 980
          哥們 我怎么沒有測試出來呢 提示
          at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)

          原來是缺少standard-1.0.6.jar。因為Ajax Tags運行的標簽所對應的TLD需要org.apache.taglib包來解析,Tomcat4.1好像沒有自帶。


          是這樣嗎 ???????????????

            回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2007-04-25 10:26 | 1
          我拷貝了你的js ,彈出了了對話框“Not able to retrieve desctiptionNot Found”  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2007-10-27 09:27 | hql
          @1
          var url="select?id="+escape(zhi);
          你的url(上邊的)寫錯了,檢查以下吧.  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2007-10-27 09:30 | hql
          有個問題問以下,為什么上面的程序在IE下運行正常,而在firefox就不正常了,怎么該才能兼容IE和Firefox?  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2007-10-29 20:52 | uidin
          剛剛試了用struts標簽也可以實現,但是想從頁面上取得數據就不行,好像涉及到字符類型的問題  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2007-12-07 12:51 | 但是
          還沒試,用后在說  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2008-04-28 16:45 | 635151438
          在ASP中怎么實現?  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2008-05-19 11:39 | 番隊副
          真好用,學習一下  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2008-05-29 19:00 | QQ:523519512
          沒有成功!  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2008-08-07 11:02 | java student
          這個沒有連接數據庫啊 ?  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2008-09-11 15:44 | kerry
          我這兒select_root.add(option);
          改成select_root.options.add(option);才有用
          難道樓主是打3C的?  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框[未登錄]
          2008-09-16 14:34 | java fan
          好像不能連接數據庫啊 ?
          如果不用連接數據庫的話 幾行代碼就可以了 不用這么麻煩吧 ?  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框[未登錄]
          2008-11-13 15:47 | 鳥人
          簡潔 明了   回復  更多評論
            
          # re: Ajax實現二級聯動下拉框[未登錄]
          2009-02-26 18:14 | aaa
          改寫的地方“如下 ”
          select_root.options.add(option);(難道樓主是打3C的?)
          var url="select?id="+escape(zhi); 改成 var url="SelectServlet?id="+escape(zhi);

            回復  更多評論
            
          # re: Ajax實現二級聯動下拉框[未登錄]
          2009-05-24 11:10 | super
          代碼測試通過!  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2009-08-14 14:23 | Movo
          太感謝你了!  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2009-11-25 16:06 | 大鳥哥
          我開始用 var xmlDoc=req.responseXML.documentElement;
          始終執行到 var xSel=xmlDoc.getElementsByTagName('select');這一句報錯,得到為空.我換成
          var xmlStr=req.responseText;之后.
          再創建一個js的xml解析對象來吧字符串轉成對象,就可了.
          樓主的方法我行不通,不知道原因,有知道的解釋下謝謝  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2010-11-04 23:23 | silk
          Ajax+HTML 能實現 嗎?  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2011-03-26 21:42 | index
          你好,老大,那我怎么傳值到列表里面啊?謝謝了  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2011-04-01 16:15 | ddr
          不知道為什么按照樓主原來的測試不通過:
          把:
          var xmlDoc=req.responseXML.documentElement;
          改成:
          var xmlDoc=req.responseXML;
          其中:
          var xSel=xmlDoc.getElementsByTagName('select');
          要與類中的輸出的標簽名一致,也就是是<select></select>
          類中輸出的時候我這改成:
          response.setContentType("text/xml;charset=GB2312");
          PrintWriter out = response.getWriter();
          out.write(last_xml);
          out.close();
          return null;
          就通過了!  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2011-04-13 15:02 | ylll111
          @ddr
          ////////////////////////////
          其中:
          var xSel=xmlDoc.getElementsByTagName('select');
          要與類中的輸出的標簽名一致,也就是是<select></select>
          ///////////////////////////
          這個xSel應該怎么獲取呢。謝謝  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2011-07-09 15:14 | 安多
          如果連數據庫 后該如何 寫 xml文件啊? 我把樓主的定值換成數據庫查出來的就不好使了  回復  更多評論
            
          # re: Ajax實現二級聯動下拉框
          2012-02-10 12:46 | lzy
          怎么連庫后返回漢字亂碼,再javabean里面打印不是亂碼 頁面上亂碼  回復  更多評論
            
          正在閱讀:



          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(35)

          隨筆檔案

          文章分類

          文章檔案

          好友的blog

          我的其他blog

          老婆的Blog

          搜索

          •  

          積分與排名

          • 積分 - 776098
          • 排名 - 56

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 徐州市| 岑巩县| 梁山县| 定州市| 博兴县| 新宁县| 突泉县| 益阳市| 瑞安市| 云阳县| 会理县| 河西区| 辽中县| 济宁市| 罗定市| 谢通门县| 鹤山市| 叙永县| 太白县| 长葛市| 宜都市| 蒲江县| 上饶县| 延边| 泽库县| 钟祥市| 黄骅市| 瓮安县| 龙海市| 和田县| 惠东县| 兴安盟| 郓城县| 巫溪县| 永登县| 尤溪县| 津市市| 盈江县| 新竹市| 富阳市| 长垣县|