hyljava

          ajax的傳值

          轉自:轉載請標明出處:http://blog.csdn.net/anyoneking/archive/2008/05/23/2472145.aspx
          1.回傳一個普通的String字符串.
          2.回傳一個組織好的Javascript字符串.
          3.回傳一個Json對象.(需要引入json.jar)
          4.回傳一個XML對象.
          基本實現如下:
          其中測試頁面為:

          <%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
          <%request.setCharacterEncoding("UTF-8");%>
          <html>
          <head>
          <title>測試Ajax頁面</title>
          </head>
          <body>
          <table width="100%" height="100%" >
              
          <td align="center" valign="center" >
                  
          <form action="" method="post" onsubmit="">
                      
          <table border="3" >
                          
          <tr>
                              
          <td>
                                  
          <input name="試驗返回String" type="button" value="試驗返回String" onclick="testAjaxForString();" style="width:140px;">
                              
          </td>
                          
          </tr>
                          
          <tr>
                              
          <td>
                                  
          <input name="試驗返回javascriptString" type="button" value="試驗返回javascriptString" onclick="testAjaxForObject();" style="width:140px;">
                              
          </td>
                          
          </tr>
                          
          <tr>
                              
          <td>
                                  
          <input name="試驗返回json" type="button" value="試驗返回json" onclick="testAjaxForJson();" style="width:140px;">
                              
          </td>
                          
          </tr>
                          
          <tr>
                              
          <td>
                                  
          <input name="試驗返回xml" type="button" value="試驗返回xml" onclick="testAjaxForXml();" style="width:140px;">
                              
          </td>
                          
          </tr>
                      
          </table>
                  
          </form>
              
          </td>
          </table>
          </body>
          </html>

          <script type="text/javascript">
          var xmlHttp ;
          function createXmlHttpRequest(){
              
          if(window.ActiveXObject){
                  xmlHttp 
          = new ActiveXObject("Microsoft.XMLHTTP") ;
              }
          else if(window.XMLHttpRequest){
                  xmlHttp 
          = new XMLHttpRequest();
              }

          }

          /**//*返回String*/
          function testAjaxForString(){
              createXmlHttpRequest();
              
          var url = "HelloWorld?";
              
          var queryString = "name=songwei";
              url 
          += queryString ;
          //    xmlHttp.onreadystatechange = parseHello ;//如果是異步,既open中最后一個參數為true.則打開該選項.
              xmlHttp.open("post",url,false);
              xmlHttp.send(
          null);
              alert(xmlHttp.responseText); 
          //如果是字符串或者xml.
          }


          /**//*返回JsObject*/
          function testAjaxForObject(){
              createXmlHttpRequest();
              
          var url = "HelloWorldForObject?";
              
          var queryString = "name=songwei";
              url 
          += queryString ;
          //    xmlHttp.onreadystatechange = parseHello ;
              xmlHttp.open("post",url,false);
              xmlHttp.send(
          null);
              alert(xmlHttp.responseText);
              
          var o = eval(xmlHttp.responseText);
              alert(
          "username="+o.username);
              alert(
          "password="+o.password);
              
          var farray = o.friend ;
              
          var fname ="";
              
          for(var i=0;i<farray.length;i++){
                  fname 
          += farray[i]+"    ";
              }

              alert(
          "friend list ="+fname);    
          }

          //返回Json
          function testAjaxForJson(){
              createXmlHttpRequest();
              
          var url = "HelloWorldForJson?";
              
          var queryString = "name=songwei";
              url 
          += queryString ;
              xmlHttp.open(
          "post",url,false);
              xmlHttp.send(
          null);
              alert(xmlHttp.responseText);
              
          var o = eval("(" + xmlHttp.responseText + ")");
              alert(o.userInfo.username);
              alert(o.userInfo.password);
              alert(o.userInfo.friends[
          0]);
              alert(o.userInfo.friends[
          1]);
          }


          //返回XML
          function testAjaxForXml(){
              createXmlHttpRequest();
              
          var url = "HelloWorldForXML?";
              
          var queryString = "name=songwei";
              url 
          += queryString ;
              xmlHttp.open(
          "post",url,false);
              xmlHttp.send(
          null);
              alert(xmlHttp.responseXML);
              alert (
          "tagName: " + xmlHttp.responseXML.documentElement.tagName);
              
          var xmlDoc = xmlHttp.responseXML ;
              
          var xmlRoot=xmlDoc.documentElement;
              
              
          var friendsItem=xmlRoot.getElementsByTagName("friends");
              alert(friendsItem[
          0].firstChild.firstChild.data);
              alert(friendsItem[
          0].firstChild.nextSibling.firstChild.data);
              
          var usernameItem = xmlRoot.getElementsByTagName("username");
              alert(usernameItem[
          0].firstChild.data);
              
          }



          </script>對于各種回傳方式的不同servlet實現:
          1.普通字符串 ,HelloWorld.java(Servlet)

          public class HelloWorld extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
              
          public HelloWorld() {
                  
          super();
              }
                 
              
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                  doPost(request,response);
              }
                
              
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                  
          // TODO Auto-generated method stub
                  String name = request.getParameter("name");
                  String str 
          = "Hello "+name ;
                  PrintWriter pw 
          = response.getWriter();
                  pw.print(str);
                  pw.close();
              }
                           
          }

          2.Javascript字符串Servlet實現

          HelloWorldForObject.java
           
          public class HelloWorldForObject extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
              
          public HelloWorldForObject() {
                  
          super();
              }
                 
              
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                  doPost(request,response);
              }
                
              
              
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                  String name 
          = request.getParameter("name");
                  User user 
          = new User();
                  user.setUsername(name);
                  user.setPassword(
          "abc");
                  List
          <String> friend = new ArrayList<String>();
                  friend.add(
          "wangdong");
                  friend.add(
          "zhaoyong");
                  user.setFriend(friend);
                  StringBuffer sb 
          = new StringBuffer();
                  sb.append(
          "var o = new Object();");
                  sb.append(
          "o.username ='"+user.getUsername()+"' ;");
                  sb.append(
          "o.password ='"+user.getPassword()+"' ;");
                  sb.append(
          "o.friend = new Array(");
                  String tmp 
          = "" ;
                  
          for(String s : user.getFriend()){
                      
          if(tmp.trim().length()<1){
                          tmp 
          += "'"+s+"'" ;
                      }
          else{
                          tmp 
          +="," ;
                          tmp 
          += "'"+s+"'" ;
                      }

                  }

                  sb.append(tmp
          +") ;");
                  sb.append(
          "o;");
                  PrintWriter pw 
          = response.getWriter();
                  pw.print(sb.toString());
                  pw.close();
              }
                           
          }


          3.JSon對象實現

          HelloWorldForJson.java
           
          public class HelloWorldForJson extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
              
          public HelloWorldForJson() {
                  
          super();
              }
                 
              
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                  doPost(request,response);
              }
                
              
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                   response.setCharacterEncoding(
          "UTF-8");  
                   response.setHeader(
          "Cache-Control","no-cache");  
                   request.setCharacterEncoding(
          "UTF-8");          
                  String result 
          = new String();
                  String name 
          = request.getParameter("name");
                  
          try{
                      JSONObject jsonResult 
          = new JSONObject();
                      jsonResult.put(
          "username",name);
                      jsonResult.put(
          "password","password");
                      JSONArray jsonFriends 
          = new JSONArray();
                      jsonFriends.put(
          "張三");
                      jsonFriends.put(
          "李四");
                      jsonResult.put(
          "friends",jsonFriends);
                      result 
          = new JSONObject().put("userInfo", jsonResult).toString();
                  }
          catch(JSONException jex){
                      jex.printStackTrace();
                  }

                  response.getWriter().print(result);
                  response.getWriter().close();
              }
                           
          }


          4.XML對象實現
          HelloWorldForXML.java  

          public class HelloWorldForXML extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
              
          public HelloWorldForXML() {
                  
          super();
              }
                 
              
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                  doPost(request,response);
              }
                
              
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                  String name 
          = request.getParameter("name");
                  Document doc 
          = null ;
                  String docStr 
          ="" ;
                  
          try{
                      DocumentBuilderFactory dbf 
          =DocumentBuilderFactory.newInstance();
                      DocumentBuilder db 
          = dbf.newDocumentBuilder();
                      doc 
          = db.newDocument();
                      Element root 
          = doc.createElement("userInfo");
                      doc.appendChild(root);
                      Element nameE 
          = doc.createElement("username");
                      Text nameT 
          = doc.createTextNode(name);
                      nameE.appendChild(nameT);
                      root.appendChild(nameE);    
              
                      Element passE 
          = doc.createElement("password");
                      Text passT 
          = doc.createTextNode("password");
                      passE.appendChild(passT);
                      root.appendChild(passE);    
                      
                      Element friends 
          = doc.createElement("friends");
                      
                      Element friend1 
          = doc.createElement("friend");
                      Text f1T 
          = doc.createTextNode("張三");
                      friend1.appendChild(f1T);
                      Element friend2 
          = doc.createElement("friend");
                      Text f2T 
          = doc.createTextNode("李四");
                      friend2.appendChild(f2T);
                      
                      friends.appendChild(friend1);
                      friends.appendChild(friend2);
                      root.appendChild(friends);
                      
                      ByteArrayOutputStream bstream 
          = null;
                      
          try {
                          bstream 
          = new ByteArrayOutputStream();
                          Transformer xformer 
          = TransformerFactory.newInstance()
                                  .newTransformer();
                          Source source 
          = new DOMSource(doc);
                          Result result 
          = new StreamResult(bstream);
                          xformer.transform(source, result);
                      }
           catch (Exception e) {
                          e.printStackTrace();
                      }
                  
                      
          try {
                          docStr 
          =  new String(bstream.toByteArray(), "UTF-8");
                      }
           catch (UnsupportedEncodingException e) {
                          e.printStackTrace();
                          docStr 
          = new String(bstream.toByteArray());
                      }

                      System.out.println(docStr);
                  
                  }
          catch(ParserConfigurationException ex){
                      ex.printStackTrace();
                  }

                  response.setContentType(
          "text/xml;charset=UTF-8"); 
                  PrintWriter writer 
          = response.getWriter();
                  writer.print(docStr); 
                  writer.flush(); 
                  writer.close();        
              }
           

          posted on 2013-11-22 16:55 何云隆 閱讀(1849) 評論(2)  編輯  收藏 所屬分類: AJAX

          評論

          # re: ajax的傳值 2013-11-22 17:11 koflwx

          學習了,可以看看http://www.bjjtglgov.com/  回復  更多評論   

          # re: ajax的傳值 2013-11-23 11:18 鵬達鎖業

          支持 吧,,,,,,,,,,,,,,  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 平原县| 定结县| 鄄城县| 新平| 磐安县| 凉山| 屯昌县| 济宁市| 龙游县| 衢州市| 德兴市| 泸溪县| 岳池县| 长乐市| 崇礼县| 桦南县| 翼城县| 迁安市| 武功县| 丹巴县| 黔江区| 嵊州市| 军事| 阿坝县| 大田县| 本溪市| 宜川县| 含山县| 巧家县| 金门县| 全州县| 黔西| 黄骅市| 扬州市| 淮南市| 郑州市| 武胜县| 靖西县| 新丰县| 新干县| 兴国县|