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" οnclick="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+'\nage:'+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>

转载于:https://www.cnblogs.com/alaricblog/p/3278293.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值