HTML

 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>itcast.cn 用户名校验ajax实例</title>
<script type="text/javascript" src="/Lesson5_AJAX_Demo1/jslib/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="/Lesson5_AJAX_Demo1/jslib/ajax.js"></script>
</head>
<body>
itcast.cn 用户名校验的ajax实例,请输入用户名:<br/>
<!-- ajax方式下,不需要使用表单提交数据 -->
<input type="text" id="userName" value=""/>
<input type="button" value="校验" onclick="verify('userName')"/><br/>
<!-- div空间用于显示ajax处理结果 -->
<div id="result"></div>
</body>
</html>

Servlet

package org.zln.ajax.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter; /**
* Created by coolkid on 2015/6/7 0007.
*/
public class AjaxServer extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
} @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
/*使用xml处理*/
response.setContentType("text/xml;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
//取参数信息
String name = request.getParameter("name");
//输入校验
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<message>");
if(name == null || name.length() == 0){
stringBuilder.append("用户名不能为空").append("</message>");
} else{
//逻辑校验与业务处理
if(name.equals("wangxingkui")){
stringBuilder.append("用户名[" + name + "]已经存在,请使用其他用户名").append("</message>");
} else{
stringBuilder.append("用户名[" + name + "]尚未存在,可以使用该用户名注册").append("</message>");
}
out.println(stringBuilder.toString());
}
} catch(Exception e){
e.printStackTrace();
}
//返回更新数据(而不是跳转到新的视图)
}
}

js

/**
* Created by coolkid on 2015/6/7 0007.
*/
var xmlHttp = null; function verifyNew(id) {
/*获取待打算数据*/
var username = document.getElementById(id).value;
/*创建XMLHttpRequest对象*/
if (window.XMLHttpRequest) {
/*针对FireFox Mozillar Opera Safair IE7+*/
xmlHttp = new XMLHttpRequest();
/*针对某些版本的Mozillar浏览器的bug修正*/
if (xmlHttp.overrideMimeType) {
xmlHttp.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) {
/*针对IE6 IE5.5 IE5*/
var activexName = [
'MSXML2.XMLHTTP',
'Microsoft.XMLHTTP'
];
for (var i = 0; i < activexName.length; i++) {
try {
/*取出一个空间名进行创建,如果创建成功,就终止循环*/
xmlHttp = new ActiveXObject(activexName[i]);
break;
} catch (e) {
}
}
}
if (!xmlHttp) {
alert('XMLHttpRequest对象创建失败');
} else {
/*注册回调函数*/
xmlHttp.onreadystatechange = callback;
/*设置连接 true表示异步交互 */
xmlHttp.open('GET', '/Lesson5_AJAX_Demo1/AjaxServletDo.do?name=' + username, true);
/*如果采用POST的方式,需要自己设置请求头*/
/*
xmlHttp.open("POST","/Lesson5_AJAX_Demo1/AjaxServletDo.do"+username,true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send("name="+username);
*/
/*发送数据*/
xmlHttp.send(null); /*因为发送的数据已经在url中,所以这里的发送数据参数设置为null*/
}
}
function callback() {
if (xmlHttp.readyState == 4) { /*交互完成*/
//判断http的交互是否成功
if (xmlHttp.status == 200) {
//使用responseXML的方式来接收XML数据对象的DOM对象
var domObj = xmlHttp.responseXML;
if (domObj) {
//<message>123123123</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('出错了!!!');
}
}
}

使用jQuery的方式改写js代码

 function verify(id){
var jqueryObj = $("#"+id);
var username = jqueryObj.val();
$.ajax({
type:"POST",/*请求方式*/
url:"/Lesson5_AJAX_Demo1/AjaxServletDo.do",/*请求地址*/
data:"name="+username,/*请求数据*/
dataType:"xml",/*接收返回数据格式*/
success:function(data){/*请求成功调用函数*/
var jqueryObj = $(data);
var message = jqueryObj.children();
var text = message.text();
$("#result").html(text);
}
});
};

使用XML传递数据的更多相关文章

  1. OpenCV和Matlab 通过XML传递数据

    因为现在下到的数据集大部分都使用了Matlab的Calibration toolbox 进行标定,其结构大部分是.mat结构的,所以它和opencv中数据传递需要一个中间过程,网上也有直接调用matl ...

  2. ajax 用xml传递数据

    页面代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Index.aspx. ...

  3. Android中Service通信(一)——启动Service并传递数据

    启动Service并传递数据的小实例(通过外界与服务进行通信): 1.activity_main.xml: <EditText android:layout_width="match_ ...

  4. activity与fragment之间传递数据

    总结:无论是activity给fragment传递数据,还是fragment给activity传递数据,都把activity和fragment都当做一个普通的对象,调用它的方法,传递参数. 1.Fra ...

  5. 3.SpringMVC修改配置文件路径和给界面传递数据

    1.修改配置文件路径  达到  配置多文件的目的 web.xml文件中基础配置有springMVC配置的servlet路径 <servlet-name>SpringMVC</serv ...

  6. 通过Application传递数据代码

    使用Application传递数据步骤如下:创建新class,取名MyApp,继承android.app.Application父类,并在MyApp中定义需要保存的属性     在整个Android程 ...

  7. WCF分布式开发步步为赢(8):使用数据集(DataSet)、数据表(DataTable)、集合(Collection)传递数据

    数据集(DataSet).数据表(DataTable).集合(Collection)概念是.NET FrameWork里提供数据类型,在应用程序编程过程中会经常使用其来作为数据的载体,属于ADO.NE ...

  8. MVC中前台如何向后台传递数据------$.get(),$post(),$ajax(),$.getJSON()总结

    一.引言 MVC中view向controller传递数据的时候真心是一个挺让人头疼的一件事情.因为原理不是很懂只看一写Dome,按葫芦画瓢只能理解三分吧. 二.解读Jquery个Ajax函数 $.ge ...

  9. Android 消息广播Intent传递数据

    1.创建布局文件activity_broadcast.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk ...

随机推荐

  1. ABAP术语-Function Module

    Function Module 原文:http://www.cnblogs.com/qiangsheng/archive/2008/02/18/1071827.html General-purpose ...

  2. python三大神器之生成器

    生成器Generator: 本质:迭代器(所以自带了__iter__方法和__next__方法,不需要我们去实现) 特点:惰性运算,开发者自定义 在python中有三种方法来获取生成器: 1.通过生成 ...

  3. Python学习之property

    Python中使用Property函数可以将类中的函数当作属性来调用. 案例 __metaclass__=type class Rectangle: def __init__(self): self. ...

  4. (数据科学学习手札36)tensorflow实现MLP

    一.简介 我们在前面的数据科学学习手札34中也介绍过,作为最典型的神经网络,多层感知机(MLP)结构简单且规则,并且在隐层设计的足够完善时,可以拟合任意连续函数,而除了利用前面介绍的sklearn.n ...

  5. ccf201703-2 STLlist

    题目:http://118.190.20.162/view.page?gpid=T56 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面, ...

  6. Xshell入门教程介绍

    免费软件 Xshell和 Xftp 都是 NetSarang 出品的优秀网络管理.安全传输工具.Xshell 是一个免费的安全终端仿真器,可以作为 SSH.TELNET 或 RLOGIN 的终端模拟, ...

  7. c/c++ 结构体传参问题

    c/c++的结构体传参可以有三种方式: 1.传递结构体变量,值传递 2.传递结构体指针,地址传递 3.传递结构体成员,可是值传递也可以是地址传递 根据代码示例: 1.传递结构体变量 #include& ...

  8. js 邮箱和手机号码验证

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. struts2官方 中文教程 系列十二:控制标签

    介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项 ...

  10. android 怎么判断activity 从哪里启动的

    有时候,你想要知道,有一个activity 从哪里启动的.怎么才能知道呢? 1.前提是,androidstadio 你下载了源码.找到你的activityBase的实现类,在startActivity ...