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加ASP二级域名转向的代码
May 17 Javascript
jQuery 研究心得 取得属性的值
Nov 30 Javascript
页面版文本框智能提示JS代码
Nov 20 Javascript
计算世界完全对称日的js代码,粗糙版
Nov 04 Javascript
ajax上传时参数提交不更新等相关问题
Dec 11 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
Feb 02 Javascript
JS控制按钮10秒钟后可用的方法
Dec 22 Javascript
javascript事件模型介绍
May 31 Javascript
js 监控iframe URL的变化实例代码
Jul 12 Javascript
vue中父子组件注意事项,传值及slot应用技巧
May 09 Javascript
Vue中使用sass实现换肤功能
Sep 07 Javascript
javascript代码实现简易计算器
Jan 25 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通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
动态加载js的几种方法
2006/10/23 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
jQuery深拷贝Json对象简单示例
2016/07/06 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
Python程序员开发中常犯的10个错误
2014/07/07 Python
Python实现的ini文件操作类分享
2014/11/20 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
2019/09/17 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
python列表切片和嵌套列表取值操作详解
2020/02/27 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
致铅球运动员广播稿精选
2014/01/12 职场文书
超市商业计划书
2014/05/04 职场文书
法律专业求职信
2014/05/24 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
优秀团员自我评价
2015/03/10 职场文书
南京大屠杀观后感
2015/06/02 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
倡议书怎么写?
2019/04/11 职场文书