zoukankan      html  css  js  c++  java
  • JavaScript学习5---Ajax返回xml文档及其解析

    本文来自javaeye。。。。

    //返回该登陆页面,并予以错误提示信息
    response.setContentType("application/xml"); //application/xml代表的是XML形式返回
    response.setHeader("Cache-Control", "no-cache"); //设置不缓存

    //组织返回数据
    String xml="<?xml version="1.0" encoding="gb2312"?>";
    xml+="<message>";
    xml+="<info>";
    xml+="<teacher><name>name01</name><age>20</age></teacher>";
    xml+="<teacher><name>name02</name><age>20</age></teacher>";
    xml+="<teacher><name>name03</name><age>20</age></teacher>";
    xml+="</info>";
    xml+="<returnmessage>";
    xml+="<returnCode>9999</returnCode>";
    xml+="</returnmessage>";
    xml+="</message>";

    PrintWriter pw=null;
    try {
    //获取页面写入器
    pw=response.getWriter();
    } catch (IOException e) {
    e.printStackTrace();
    }
    pw.write(xml);
    pw.flush();
    pw.close();
    return null;



    JSP里解析获取数据:

    <body>
       <html:form action="/login.do?method=login" method="post">
         <html:text property="username"></html:text>
         <html:checkbox property="check" onclick="usernameCheck()">是否已经存在</html:checkbox>
         <html:text property="password"></html:text>
         <html:submit></html:submit>
         <html:reset></html:reset>
         <span id="checklogin"/>
       </html:form><br><br><br></body>
    <script>
        var req; //定义全局变量
        function usernameCheck()
        {    
          var username=document.getElementById("username").value;
          var password=document.getElementById("password").value;
          var url="login.do?method=login&username="+username+"&password="+password;
         
          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);
          }
          return false;
        }
       
        function callback()
        {
           if(req.readyState==4)  //加载完毕
           {
              if(req.status==200)
              {
                parseMessage(); //解析数据
              }
              else
           {
             alert(req.status);
             alert('Not able to litrieve description');
           }
           }
           else
           {
             //正在加载
             document.getElementById("checklogin").innerHTML="正在加载........";
           }  
        }
       
        function parseMessage()
        {
      this.itemList = new Array();
          var xmlDoc=req.responseXML.documentElement; //接收XML格式的数据
          var messages=xmlDoc.getElementsByTagName("info");
          var mlength=messages.length; 
          alert(mlength);  
          if(mlength>0)
          {
               var teacher=messages[0].getElementsByTagName("teacher");
               for( var j=0;j<teacher.length;j++)
               {
                 var name=teacher[j].getElementsByTagName("name")[0].firstChild.nodeValue;
                 var age=teacher[j].getElementsByTagName("age")[0].firstChild.nodeValue;
                 alert('No:0'+' name:'+name+' age:'+age);
                 this.itemList.push(new Array(name,age));
               }
          }
             
          var returnmessage=xmlDoc.getElementsByTagName("returnmessage");
          var returnCode=returnmessage[0].getElementsByTagName("returnCode")[0].firstChild.nodeValue;
              
          alert(this.itemList.length);
          document.getElementById("checklogin").innerHTML=returnCode;
        }
      
      </script>

  • 相关阅读:
    读书笔记 之《Thinking in Java》(对象、集合、异常)
    ArrayList 和 LinkedList的执行效率比较
    Hybris CronJob.
    C# 中的treeview绑定数据库(递归算法)
    identity_insert---实验性插入大批量数据和分页存储过程
    SQL Server 存储过程
    PL/SQL 在64位机上不能使用的问题解决
    登陆Oracle11g的企业管理器
    SQL在oracle和SQLserver将查询结果创建为新表的不同之处
    介绍一下内联、左联、右联
  • 原文地址:https://www.cnblogs.com/alaricblog/p/3278293.html
Copyright © 2011-2022 走看看