<script language="JavaScript">
var XMLHttpReq;
  //创建XMLHttpRequest对象       
    function createXMLHttpRequest() {
if(window.XMLHttpRequest) { //Mozilla 浏览器
XMLHttpReq = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // IE浏览器
try {
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
}
//发送请求函数
function sendRequest(url) {
createXMLHttpRequest();
XMLHttpReq.open("GET", url, true);
XMLHttpReq.onreadystatechange = processResponse;//指定响应函数
XMLHttpReq.send(null);  // 发送请求
}
// 处理返回信息函数
    function processResponse() {
     if (XMLHttpReq.readyState == 4) { // 判断对象状态
         if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
             updateList();
            } else { //页面不正常
                window.alert("您所请求的页面有异常。");
            }
        }
    }
</srcipt>
XMLHttpRequest简介
open() 建立到服务器的新请求
send() 向服务器发送请求
abort() 退出当前请求
getResponseHeader("header") 返回指定首部的串值
setRequestHeader("header","value")把指定首部设置为所提供的值.在设置任何首部之前必须先调用open()
readyState 提供当前HTML的就绪状态
responseText 服务器返回的请求响应文本
responseXML 服务器的响应,表示为XML,这个对象可以解析为一个DOM对象HTTP就绪状态表示请求的状态或情形,它用于确定请求是否已经开始,是否得到了响应或者/响应模型是否已经完成,它还可以帮助读取服务器提供的响应文本或数据是否安全.在Ajax应用程序中需要了解五种就绪状态
0: 请求没有发出(在调用open()之前)
1: 请求已经建立但没有发出(调用send()之前)
2: 请求已经发出正在处理之中(这里通常可以从响应得到内容头部)
3: 请求已经处理,响应中通常有部分数据可用,但是服务器还没有完成响应
4: 响应已完成,可用访问服务器响应并使用它package com.ajax;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 { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/xml");
StringBuffer sb = new StringBuffer();
        sb.append(("<?xml version='1.0' encoding='UTF-8'?>"));
        sb.append("<type>");
        sb.append("<type_name>AA</type_name>");
        sb.append("<type_name>BB</type_name>");
        sb.append("<type_name>CC</type_name>");
        sb.append("<type_name>DD</type_name>");
        sb.append("</type>");
        response.getWriter().print(sb.toString());
    } public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
        doGet(request,response);
}
}
  <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
 <servlet-name>ajaxServlet</servlet-name>
 <servlet-class>com.ajax.ajaxServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>ajaxServlet</servlet-name>
  <url-pattern>/ajaxServlet</url-pattern>
  </servlet-mapping>  <servlet>
    <servlet-name>debugjsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
      <param-name>classdebuginfo</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>debugjsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>My JSP 'index.jsp' starting page</title>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
  var XMLHttpReq;
  function createXMLHttpRequest()
  {
       if(window.XMLHttpRequest)
    {
       XMLHttpReq = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)       {
      try
      {
        XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
      }catch(e)
      {
        try
        {
              XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");        
          }catch(e){}
      }
      if(XMLHttpReq == null)
      {
       
        return;
      }
    }
  }
     function sendRequest(url)
  {
    createXMLHttpRequest();
    XMLHttpReq.open("GET",url,true);
    XMLHttpReq.onreadystatechange =processResponse ;
    XMLHttpReq.send(null);
  }
  function processResponse()
  {
    if(XMLHttpReq.readyState == 4)
    {
       if(XMLHttpReq.status == 200)
       {
         var xmlDoc = XMLHttpReq.responseXML;
         var message = xmlDoc.getElementsByTagName("type_name");
         var vv = message[0].firstChild.nodeValue;
         for(var i=1; i<message.length; i++)
         {
            vv += message[i].firstChild.nodeValue;
         }
         document.getElementById("tv").innerText=vv;
       }
    }
  }
</script>
  </head>
  
  <body>
     <button onclick="sendRequest('ajaxServlet')">成功</button>
     <span id="tv"></span>
  </body>
</html>