(AJAX学习二) XHR及JQuery处理XML数据

来源:互联网 发布:沈阳弘历软件 编辑:程序博客网 时间:2024/06/14 07:02

前面文章处理的文本数据,今天终于把处理XML数据调试通过了。。。

Js中主要是回调函数的处理不同:

  1. function callback(){
  2.     //判断对象交互
  3.     if(xmlhttp.readyState == 4){
  4.         //判断http交互
  5.         if(xmlhttp.status == 200){
  6.             //使用responseXML的方式来接收XML数据对象的DOM对象
  7.             var domObj = xmlhttp.responseXML;
  8.             if(domObj){
  9.                 //DOM中使用getElementsTagName根据标签名来获得元素节点
  10.                 var messageNodes = domObj.getElementsByTagName("message");
  11.                 if(messageNodes.length > 0){
  12.                     //获得文本内容对应的节点
  13.                     var textNode = messageNodes[0].firstChild;
  14.                     //nodeValue获得节点的文本内容
  15.                     var responseMessage = textNode.nodeValue;
  16.                     
  17.                     var divNode = document.getElementById("result");
  18.                     //设置元素节点的HTML内容
  19.                     divNode.innerHTML = responseMessage;
  20.                 }
  21.                 else {
  22.                     alert("messageNodes is null!" + xmlhttp.responseText);
  23.                 }
  24.             }
  25.             else{
  26.                 alert("responseXML Error:" + xmlhttp.responseText);
  27.             }
  28.         }
  29.         else {
  30.             alert("出错了。。。");
  31.         }
  32.     }
  33. }

下面是JQuery处理XML。。。

  1. function verify(){
  2.     var obj = $("#username");
  3.     var name = obj.val();
  4.     
  5.     var a = {name:"123",age:23};
  6.     
  7.     $.ajax({
  8.         type: "POST",
  9.         url: "AJAXXMLServer",
  10.         //web.xml对应配置
  11.         //<servlet-mapping>
  12.         //      <servlet-name>AJAXXMLServer</servlet-name>
  13.         //      <url-pattern>/AJAXXMLServer</url-pattern>
  14.         //</servlet-mapping>
  15.         data: "name=" + name,
  16.         dataType: "xml",
  17.         success: callback
  18.     });
  19.     
  20.     $.get("AJAXXMLServer?name="+name,null,callback);
  21. }
  22. //回调函数
  23. function callback(data){
  24.     var jqueryObj = $(data);
  25.     var message = jqueryObj.children();
  26.     var text = message.text();
  27.     var resultObj = $("#result");
  28.     resultObj.html(text);
  29.     alert("");
  30. }

服务器端Servlet拼装XML数据。。。

  1. String old = request.getParameter("name");
  2.             
  3.             StringBuilder builder = new StringBuilder();
  4.             builder.append("<message>");
  5.             if(old == null || old.length() == 0) {
  6.                 builder.append("用户名不能为空").append("</message>");
  7.             }
  8.             else {
  9.                 //把返回拼装成XML格式
  10.                 String name = old;
  11.                 if(name.equals("gqh")){
  12.                     builder.append("用户["+name+"]已经存在,请使用其它用户!").append("</message>");
  13.                 }
  14.                 else{
  15.                     builder.append("用户["+name+"]尚不存在,可以使用该用户!").append("</message>");
  16.                 }
  17.             }
  18.             out.println(builder.toString());