JAVA涂鴉
          關(guān)于JAVA的點(diǎn)點(diǎn)滴滴
          posts - 50,  comments - 689,  trackbacks - 0
          這個(gè)一個(gè)ajax的經(jīng)典示例,也是ajax的長處所在。不多說了,下面來看代碼。

          項(xiàng)目結(jié)構(gòu)圖:
          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>

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

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

          原來是缺少standard-1.0.6.jar。因?yàn)锳jax Tags運(yùn)行的標(biāo)簽所對應(yīng)的TLD需要org.apache.taglib包來解析,Tomcat4.1好像沒有自帶。


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

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

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



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

          常用鏈接

          留言簿(35)

          隨筆檔案

          文章分類

          文章檔案

          好友的blog

          我的其他blog

          老婆的Blog

          搜索

          •  

          積分與排名

          • 積分 - 776089
          • 排名 - 56

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 华安县| 博客| 南澳县| 伊吾县| 商丘市| 岳阳县| 县级市| 临邑县| SHOW| 绥德县| 达孜县| 武威市| 临沭县| 五河县| 迁西县| 噶尔县| 定结县| 隆林| 湖南省| 毕节市| 西平县| 苏尼特右旗| 龙江县| 禄丰县| 高安市| 竹北市| 新乡县| 日喀则市| 汕尾市| 河间市| 淮滨县| 麻栗坡县| 抚远县| 博爱县| 深圳市| 班戈县| 三穗县| 安新县| 乌什县| 和静县| 攀枝花市|