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 相关文章推荐
JQuery 插件制作实践 xMarquee插件V1.0
Apr 02 Javascript
javascript中字符串拼接需注意的问题
Jul 13 Javascript
javascript中方便增删改cookie的一个类
Oct 11 Javascript
Jquery焦点图实例代码
Nov 25 Javascript
transport.js和jquery冲突问题的解决方法
Feb 10 Javascript
js实现同一页面多个运动效果的方法
Apr 10 Javascript
15款最好的Bootstrap在线编辑器
Aug 03 Javascript
validationEngine 表单验证插件使用实例代码
Jun 15 Javascript
微信小程序实现全局搜索代码高亮的示例
Mar 30 Javascript
通过实例了解js函数中参数的传递
Jun 15 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
Mar 07 Javascript
vue 动态添加class,三个以上的条件做判断方式
Nov 02 Javascript
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
PHP的博客ping服务代码
2012/02/04 PHP
php常用数学函数汇总
2014/11/21 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
详解php中 === 的使用
2016/10/24 PHP
php实现的顺序线性表示例
2019/05/04 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
Z-Blog中用到的js代码
2007/03/15 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
layer.open关闭父窗口 以及调用父页面的方法
2018/08/17 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
Flask框架信号用法实例分析
2018/07/24 Python
python小程序实现刷票功能详解
2019/07/17 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
澳大利亚拥有最好的家具和家居用品在线目的地:Nestz
2019/02/23 全球购物
教师党员一句话承诺
2014/03/28 职场文书
委托公证书范本
2014/04/03 职场文书
学校花圃的标语
2014/06/18 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
交流会主持词
2015/07/02 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS