1 新建一个servelt--- AjaxXMLServer.java , 并在web.xml 中配置
public class AjaxXMLServer extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// super.doGet(httpServletRequest, httpServletResponse); //To change body of overridden methods use File | Settings | File Templates.
try{
request.setCharacterEncoding("GBK");
//修改点1 content-Type 是“text/xml”
response.setContentType("text/xml;charset=GBK");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
//修改点2 返回的数据拼装成xml格式
StringBuilder builder = new StringBuilder();
builder.append("<message>");
if(name == null || name.trim().equals("")){
builder.append("用户名不能为空").append("</message>");
}else if(name.equals("qq")){
builder.append("用户名已存在").append("</message>");
}else{
builder.append("用户名不存在").append("</message>");
}
out.println(builder.toString());
}catch(Exception e){
e.printStackTrace();
}
}
@Override
protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
//super.doPost(httpServletRequest, httpServletResponse); //To change body of overridden methods use File | Settings | File Templates.
doGet(httpServletRequest,httpServletResponse);
}
}
2 .verify.js
var xmlhttp;
//创建不同浏览器的xmlhttprequest对象
function createXMLHttpRequest(){
//针对fiefor,mozillar,opera,ie7,ie8
if(window.XMLHttpRequest()){
xmlhttp = new XMLHttpRequest();
}else if(window.ActiveXObject()){
//针对ie5,ie6
//两个可以用于创建xmlhttprequest对象的控件名称,保存在一个js数组中
//排在前面的版本较新
var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0;i < activeName.length;i++){
try{
//取出一个控件进行创建,创建成功就返回
xmlhttp = new ActiveXObject(activexName[i]);
break;
}catch(e){
}
}
}
}
function verify(){
createXMLHttpRequest();
var userName = document.getElementById("name").value;
// var url = "AjaxServer?name=" + userName + "×tampt=" + new Date().getTime();
//提交的方式,提交的地址,同步还是异步
/* xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange = callback;
xmlhttp.send(null);*/
//post方式提交
var url = "AjaxXMLServer";
xmlhttp.open("post",url,true);
//设置头信息
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = callback;
//异步方式。send这句话会立即执行
xmlhttp.send("name=" + userName + "×tampt=" + new Date().getTime());
}
/*function callback(){
// alert(xmlhttp.readyState) ;
if(xmlhttp.readyState == 4){ //全部传完了
if(xmlhttp.status == 200){ //传递的消息正确
var resTextdiv = document.getElementById("result");
resTextdiv.innerHTML = "<font color='red'>" + xmlhttp.responseText + "</font>";
}else{
alert("error");
}
}
}*/
//传递的是xml形式的数据
function callback(){
// alert(xmlhttp.readyState) ;
if(xmlhttp.readyState == 4){ //全部传完了
if(xmlhttp.status == 200){ //传递的消息正确
//1 取得数据的dom 对象,使用responseXML的方式接收数据的dom对象
var domObj = xmlhttp.responseXML;
if(domObj){
//2 元素节点 , 返回的是一个数组
var messageNodes = domObj.getElementsByTagName("message");
if(messageNodes.length > 0){
//3 文本节点 , message标签的文本在dom中是标签所对应的子节点
var textNode = messageNodes[0].firstChild;
//4 文本内容
var responseMessage = textNode.nodeValue;
var resXMLdiv = document.getElementById("result");
//5 设置元素节点的内容
resXMLdiv.innerHTML = responseMessage;
}
}
}else{
alert("error");
}
}
}