jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML


Posted in Javascript onOctober 16, 2011

摘要:本节补充ajax学习笔记1中
第二种方式:使用XMLHttpRequest对象的responseXML的方式来接受XML数据对象的DOM对象
在ajax学习笔记1中已经对准备工作和需要用到的知识做了比较详细的介绍,本节主要介绍需要修改的代码以及新增的代码
.新增一个servlet类
AJAXXMLServer.java

import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.ServletException; 
import java.io.IOException; 
import java.io.PrintWriter; 
//XML的数据 
public class AJAXXMLServer extends HttpServlet { 
public void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
//response.setContentType("text/html;charset=utf-8"); 
response.setContentType("text/xml;charset=utf-8"); //修改此次为text/xml 
PrintWriter out=response.getWriter(); 
//1.取参数 
String old=request.getParameter("name"); 
StringBuffer sb=new StringBuffer(); 
sb.append("<message>"); 
//2.检查是否有问题 
if(old==null||old.length()==0){ 
sb.append("用户名不能为空").append("</message>"); //拼装XML 
}else{ 
//3.校验操作 
String name=old; 
if(name.equals("pan")){ 
//4.和传统应用不同之处。这一步需要将用户感兴趣的数据返回给页面端,而不是将一个新的页面发送给用户 
//写法没有变,本质变了 
sb.append("用户名["+name+"]已经存在").append("</message>"); //拼装XML 
}else{ 
sb.append("用户名["+name+"]可以使用").append("</message>"); //拼装XML 
} 
} 
out.println(sb.toString());//注意,此句一定不能少了,并且注意放置的位置 
} 
public void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
this.doGet(request,response); 
} 
}

.修改web.xml
加入AJAXXMLServer类的配置
web.xml
<servlet> 
<servlet-name>AJAXXMLServer</servlet-name> 
<servlet-class>AJAXXMLServer</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>AJAXXMLServer</servlet-name> 
<url-pattern>/AJAXXMLServer</url-pattern> 
</servlet-mapping>

.修改verify.js文件
第一处:
把xmlhttp.open("GET","AJAXServer?name="+username,true);

改为
xmlhttp.open("GET","AJAXXMLServer?name="+username,true);//responseXML方式,修改类名

第二处:

responseText
//获取服务器端返回的数据 
//第一种方式:获取服务器端输出的纯文本数据 
//var responseText=xmlhttp.responseText; 
//将数据显示在页面上 通过dom的方式找到div标签对应的元素节点 
//var divNode=document.getElementById("result"); 
//设置元素节点中的html的内容 
//divNode.innerHTML=responseText;

改为:
responseXML
//第二种方式:使用responseXML的方式来接受XML数据对象的DOM对象 
var domObj = xmlhttp.responseXML; 
var messageNodes = domObj.getElementsByTagName("message"); 
//获取message节点中的文本内容 
//message标签中的文本是在dom中是message标签所对应的元素节点的子节点,firstChild可以获取当前节点的第一个子节点 
if (messageNodes.length > 0) { 
var textNode = messageNodes[0].firstChild; 
//对于文本节点来说,可以通过nodeValue的方式返回文本 
var responseMessage = textNode.nodeValue; 
//把值responseMessage显示在div上 
var divNode=document.getElementById("result"); 
divNode.innerHTML=responseMessage; 
} else { 
alert("XML数据格式错误,原始文本内容为:" + xmlhttp.responseText); 
}

第三处:

text/html
if(xmlhttp.overrideMimeType){ 
xmlhttp.overrideMimeType("text/html"); 
}

改为:
text/xml
if(xmlhttp.overrideMimeType){ 
xmlhttp.overrideMimeType("text/xml");//XML的方式时需要修改这个地方 
}

对于IE浏览器如果第三处不修改不会报错,但是对于firefox浏览器,如果此处不修改,以下语句会报错
var domObj = xmlhttp.responseXML;
可以通过增加alert语句来验证,IE浏览器的时候第三处修改的代码的if语句不会被执行,firefox浏览器的时候这个if语句就会被执行

说明:访问路径、运行截图与ajax学习笔记1中都是已经的,就省略了。

Javascript 相关文章推荐
js GridView 实现自动计算操作代码
Mar 25 Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
Apr 01 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
Dec 10 Javascript
详解javascript的变量与标识符
Jan 04 Javascript
基于vue实现swipe分页组件实例
May 25 Javascript
Vue如何从1.0迁移到2.0
Oct 19 Javascript
详解angular应用容器化部署
Aug 14 Javascript
vue2 设置router-view默认路径的实例
Sep 20 Javascript
js canvas实现橡皮擦效果
Dec 20 Javascript
vue 导航内容设置选中状态样式的例子
Nov 01 Javascript
微信小程序仿通讯录功能
Apr 09 Javascript
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 Vue.js
jquery中ajax学习笔记一
Oct 16 #Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
Oct 16 #Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
Oct 14 #Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
Oct 13 #Javascript
获取body标签的两种方法
Oct 13 #Javascript
自己动手制作jquery插件之自动添加删除行的实现
Oct 13 #Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
Oct 13 #Javascript
You might like
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
PHP操作MySQL事务实例
2014/11/05 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
2014/10/16 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
Python help()函数用法详解
2014/03/11 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
python输入中文的实例方法
2020/09/14 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
金宝贝童装官网:Gymboree
2016/08/31 全球购物
石油大学毕业生自荐信
2014/01/28 职场文书
初一体育教学反思
2014/01/29 职场文书
策划创业计划书
2014/02/06 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
售房协议书范本2014
2014/10/23 职场文书
调任通知
2015/04/21 职场文书
如何理解PHP核心特性命名空间
2021/05/28 PHP