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 vvorld 在线加密破解方法
Nov 13 Javascript
收集的10个免费的jQuery相册
Feb 26 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
Sep 06 Javascript
javascript实现显示和隐藏div方法汇总
Aug 14 Javascript
jquery实现点击变换导航样式的方法
Aug 31 Javascript
js简单网速测试方法完整实例
Dec 15 Javascript
jQuery中的ready函数与window.onload谁先执行
Jun 21 Javascript
javascript简易画板开发
Apr 12 Javascript
Javascript 实现计算器时间功能详解及实例(二)
Jan 08 Javascript
新闻上下滚动jquery 超简洁(必看篇)
Jan 21 Javascript
react-router实现按需加载
May 09 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
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
IIS6的PHP最佳配置方法
2007/03/19 PHP
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
jquery的index方法实现tab效果
2011/02/16 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
Vue脚手架的简单使用实例
2018/07/10 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
a标签调用js的方法总结
2019/09/05 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
Vue 3.0中jsx语法的使用
2020/11/13 Javascript
[01:27]2014DOTA2展望TI 剑指西雅图IG战队专访
2014/06/30 DOTA
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
一款纯css3实现简单的checkbox复选框和radio单选框
2014/11/05 HTML / CSS
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
父母对孩子的寄语
2014/04/09 职场文书
运动会演讲稿
2014/05/07 职场文书
面试自我评价范文
2014/09/17 职场文书
使用MybatisPlus打印sql语句
2022/04/22 SQL Server
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS