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 相关文章推荐
在Javascript中为String对象添加trim,ltrim,rtrim方法
Sep 22 Javascript
网页中实现浏览器的最大,最小化和关闭按钮
Mar 12 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
Jan 05 Javascript
JavaScript 选中文字并响应获取的实现代码
Aug 28 Javascript
Javascript基础教程之argument 详解
Jan 18 Javascript
jQuery调用ajax请求的常见方法汇总
Mar 24 Javascript
js实现的彩色方块飞舞奇幻效果
Jan 27 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
Aug 16 Javascript
利用JavaScript实现拖拽改变元素大小
Dec 14 Javascript
JS仿JQuery选择器功能
Mar 08 Javascript
前端开发不得不知的10个最佳ES6特性
Aug 30 Javascript
js实现验证码功能
Jul 24 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
把77A收信机改造成收音机
2021/03/02 无线电
模仿OSO的论坛(一)
2006/10/09 PHP
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
php获取后台Job管理的实现代码
2011/06/10 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
python函数形参用法实例分析
2015/08/04 Python
Python学习思维导图(必看篇)
2017/06/26 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
智能钱包:Ekster
2019/11/21 全球购物
网络研修随笔感言
2014/02/17 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书
python 命令行传参方法总结
2021/05/25 Python
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android