今天我们用xml来完成以前那个注册校验。希望大家能理解xml在Ajax中的作用。
首先还得改servlet。
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AJAXServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
//响应的Content-Type必须是text/xml
response.setContentType("text/xml;charset=gb2312");
try{
PrintWriter out=response.getWriter();
String old =request.getParameter("name");
//用StringBuilder的方式拼接xml格式,把需要传输的信息放在里面
StringBuilder builder=new StringBuilder();
builder.append("<message>");
if(old==null||old.length()==0){
builder.append("用户名不能为空").append("</message>");
}else{
String name=old;
if(name.equals("yanzhenwei")){
builder.append("用户名["+name+"]已经存在,请换个名字").append("</message>");
}else{
builder.append("用户名["+name+"]尚未存在,可以使用").append("</message>");
}
//输出
out.println(builder.toString());
}
}catch(Exception e){
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
doGet(request,response);
}
}
接着就是修改js代码了,需要修改的地方我都用不同颜色的线标注了
//用户名校验的方法
//这个方法使用XMLHTTPRequest对象进行AJAX的异步数据交互
var xmlhttp;
function verify(){
//1.使用dom的方式获取文本框中的值
//document.getElementBuId("userName")是dom中获取元素节点的一种方法,一个元素节点对应HTML页面中的一个标签,如果<input>
//.value可以获取一个元素节点的value属性值
var userName = document.getElementById("userName").value;
//2.创建XMLHttpRequest对象
//这是XMLHttpRequest兑现使用中最为复杂的一步
//需要这对IE和其他类型浏览器建立这个对象的不方式写不同的代码
if(window.XMLHttpRequest){
//针对FireFox,Mozillar,opera,safari,IE7,IE8
xmlhttp = new XMLHttpRequest();
//针对某些特定版本的mozillar浏览器的bug修正
if(xmlhttp.overrideMimeType){
xmlhttp.overrideMimeType("text/xml");
}
}else if(window.ActiveXObject){
//针对IE5,IE5.5,IE6(IE7,IE8)
//两个可以用于创建XMLHTTPRequest对象的控件名称,保存在一个js数组中
//排在前面的版本较新
var activexName =["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0;i<activexName.length;i++){
try{
//取出一个控件名进行创建,如果创建成功就终止循环
//如果创建失败,抛出异常,然后继续循环,继续尝试创建
xmlhttp = new ActiveXObject(activexName[i]);
break;
} catch(e){
}
}
}
//2 注册回调函数
//注册回调函数时只需要函数名不要加括号
//我们需要注册的是函数名称,如果加上括号,就把函数的返回值给注册上了,这是错误的
xmlhttp.onreadystatechange = callback;
//3设置连接信息
//第一个参数表示http的请求方式。支持所有http的请求方式。主要使用get和post
//第二个参数表示请求的url地址,get方式的参数也在url中
//第三个参数表示采用异步还是同步方式交互,true表示异步
//GET方式请求的代码
//xmlhttp.open("GET","AJAXServer?name="+userName,true);
//POST方式请求的代码
xmlhttp.open("POST","AJAXXMLServer",true);
//POST方式需要自己设置http的请求头
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//POST方式发送数据
xmlhttp.send("name="+userName);
//4 发送数据,开始和服务器端进行交互
//同步方式下,send这句话会在服务器设置回来后才执行完
//异步方式,send这句话执行晚会立即完成
//GET方式
//xmlhttp.send(null);
}
//回调函数
function callback(){
// alert(xmlhttp.readyState);
//5接收响应数据
//判断对象的状态是交互完成
if(xmlhttp.readyState==4){
//判断http的交互是否成功、
if(xmlhttp.status==200){
//获取服务器端返回的数据
//使用responseXML的方式接受XML数据对象的Dom对象
var domObj =xmlhttp.responseXML;
if(domObj){
//<message>1231234</message>
//dom中利用getElementsByTagName可以根据标签名来获取元素节点,返回的是一个数组
var messageNodes= domObj.getElementsByTagName("message");
if(messageNodes.length>0){
//获取message节点中的文本内容
//message标签中的文本在dom中是message标签对应的元素的子节点,firstChild可以获取到当前节点的第一个子节点
//通过以下方式就可以获得到文本内容所以对应的节点
var textNode = messageNodes[0].firstChild;
//对于文本节点来说,可以通过nodeValue的方式返回文本节点的文本内容
var responseMessage = textNode.nodeValue;
//将数据显示在页面上
//通过dom方式找到div标签所对应的元素节点
var divNode = document.getElementById("result");
//设置元素节点中的html内容
divNode.innerHTML=responseMessage;
} else{
alert("XML数据格式错误,原始文本内容为:"+xmlhttp.responseText);
}
}else{
alert("XML数据格式错误,原始文本内容为:"+xmlhttp.responseText);
}
}else
{
alert("出错了");
}
}
}
然后就OK了。
分享到:
相关推荐
在本篇“快速理解Ajax(二)”中,我们将深入探讨Ajax的核心概念、工作原理及其在实际开发中的应用。 首先,我们要明确Ajax的核心组成部分: 1. **XMLHttpRequest对象**:它是Ajax的核心,负责在后台与服务器通信...
1. **基础概念**:首先,你需要理解Ajax的基本工作原理,包括它如何利用JavaScript发送异步请求到服务器,并处理响应数据。 2. **XMLHttpRequest对象**:Ajax的核心是XMLHttpRequest(XHR)对象,它是JavaScript的...
在“四天学会Ajax 快速上手”的课程中,你将了解到以下关键知识点: 1. **XMLHttpRequest对象**:这是Ajax的基础,用于在后台与服务器进行通信。通过这个对象,你可以发送HTTP请求并接收响应,而不会中断用户的界面...
这个教程将通过以上10个经典例子,结合实际的数据库文件,让你亲手实践,深入理解Ajax的用法和功能,从而快速上手Ajax开发。每个例子都将涵盖Ajax请求的创建、数据处理和页面更新等多个环节,确保你在实践中掌握Ajax...
这个例子是一个简单的Ajax实现,适合初学者理解Ajax的工作原理。下面我们将详细解析这个例子中的关键知识点。 首先,我们看到一个名为`First.html`的HTML文件,其中包含了一个JavaScript函数`createXmlHttp()`。这...
Ajax中文手册是为开发者提供的一份详细指南,旨在帮助初学者快速掌握Ajax的核心概念、使用方法以及相关API。这份手册以.chm(Microsoft编写的帮助文档格式)呈现,方便用户离线查阅。 Ajax的核心特性在于异步性,它...
**Ajax技术详解** ...通过这个视频教程,学习者不仅可以理解Ajax的工作原理,还能掌握实际应用技巧,为就业做好准备。同时,由于文件过大,采用百度网盘分享,便于学员下载和观看,解决了大文件传输的问题。
### 快速学习AJAX的关键知识点 #### 一、AJAX概述 - **定义**:AJAX(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以实现网页的部分更新,...
**四、jQuery与Ajax** 为了简化Ajax的使用,jQuery库提供了一个易于使用的接口`$.ajax()`。此外,还有`$.get()`, `$.post()`等简化的函数,使得开发者能更快速地实现Ajax功能。 **五、跨域问题** 由于同源策略...
在快速上手Ajax的过程中,有几个关键知识点是必须掌握的: 1. **JavaScript基础**:Ajax的核心是JavaScript,因此熟悉JavaScript语法和DOM操作是必不可少的。你需要了解如何创建和执行JavaScript函数,以及如何通过...
《深入理解Ajax基于JavaScript的RIA开发》是一本专注于Web开发技术的专业书籍,其配书源码包含了一系列实际的示例和实践项目,旨在帮助读者深入掌握Ajax和基于JavaScript的富互联网应用(Rich Internet Applications...
本AjaxDEMO适合初学者学习,旨在提供一个基础的实践平台,帮助理解Ajax的工作原理及其在实际开发中的应用。** ### 1. Ajax基础知识 Ajax的核心是JavaScript对象XMLHttpRequest,它允许在后台与服务器端通信。当...
本资料《理解Ajax:用Javascript构建Web程序》将深入探讨这一技术。 **JavaScript**是实现Ajax的核心,是一种广泛用于客户端的脚本语言,主要在浏览器环境中运行。JavaScript允许开发者动态地修改HTML文档、处理...
这份资料可能帮助开发者快速上手Ajax开发,理解如何创建异步请求,如何处理服务器响应,以及如何在实际项目中应用Ajax技术。 学习Ajax和JavaScript,不仅需要掌握基本的语法和API,还需要对HTTP协议、DOM操作有深入...
5. **Ajax请求的生命周期**:理解Ajax请求从创建到完成的整个过程,包括打开连接、发送请求、接收响应和处理结果等步骤,是编写高效Ajax代码的关键。 6. **Ajax库与框架**:除了原生的XMLHttpRequest,许多开发者会...
AJAX框架是为了简化AJAX开发而设计的工具,它们提供了一套封装好的API,帮助开发者快速、便捷地构建具有AJAX功能的应用。这些框架可以处理与服务器的通信、数据解析、错误处理等复杂任务,让开发者能够专注于应用...
- `AJAX开发精要源码sourcecode`:书中提供的源码示例,可以帮助读者理解Ajax的实现细节,通过实践加深理解。 总之,《Ajax开发精要》是一本全面介绍Ajax技术的书籍,结合实际案例和源码分析,有助于初学者快速...
- 学习基础:理解AJAX工作原理,熟悉ASP.NET AJAX架构。 - 掌握控件:深入学习UpdatePanel、ScriptManager等控件的使用。 - 实战演练:通过实例学习如何创建局部刷新、异步调用服务器方法等。 - 高级话题:了解如何...
**Ajax技术详解** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。这种技术结合了JavaScript、XML、DOM、CSS...在开发过程中,理解并熟练运用Ajax技术至关重要。