Ajax入门——XMLHttpRequest对象的使用

index.html代码:

<%--
    Document   : index
    Created on : 2010-3-25, 12:46:06
    Author     : zhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd ">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
        <script type="text/javascript">
            var xmlhttp;
            //var array = [];//定义一个数组来存储XMLHttpRequest的状态
            function submit(){
                ///alert("Test submit().");
                //1.创建XMLHttpRequest对象
                if(window.XMLHttpRequest){
                    //IE7.0,IE8.0,FireFox,Mozilla,Safari,Opera
                    xmlhttp = new XMLHttpRequest();
                    if(xmlhttp.overrideMineType){
                        xmlhttp.overrideMineType("text/xml");
                    }
                }else if(window.ActiveXObject){
                    //IE5,IE5.5,IE6..
                    var activexName = ["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
                    for(var i=0;i<activexName.length;i++){
                        try{
                            xmlhttp = new ActiveXObject(activexName[i]);
                            break;
                        }catch(e){
                        }
                    }
                }

                //判断浏览器是否支持创建XMLHttpRequest对象
                if(xmlhttp == undefined || xmlhttp == null){
                    alert("当前浏览器不支持创建XMLHttpRequest对象");
                    return;
                }

                //alert(xmlhttp);
                //array.push(xmlhttp.readyState);
                //2.注册回调方法
                xmlhttp.onreadystatechange = callback;
                //错误的写法
                //xmlhttp.onreadystatechange = callback();

                //获取文本框中用户输入的内容
                var email = document.getElementById("email").value;

                //GET方式
                //3.设置和服务器交互的相应参数
                xmlhttp.open("GET", "Email?email="+email, true, "admin", "admin");

                //4.设置向服务器端发送的数据,启动和服务器的交互
                xmlhttp.send(null);
               
               //POST方式
               /*
               xmlhttp.open("POST", "Email", true, "admin", "admin");
               xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
               xmlhttp.send("email="+email);
               */
            }
            //回调方法
            function callback(){
                //array.push(xmlhttp.readyState);
                //5.判断和服务器的交互是否完成,还要判断服务器是否正确返回了数据
                if(xmlhttp.readyState == 4){
                    //readyState=0 表示XMLHttpRequest对象已经创建,但没有初始化(未调用open方法)
                    //readyState=1 表示open方法已经调用,但是没有向服务器发送数据(send方法没有调用)
                    //readyState=2 表示send方法被调用,服务器尚未开始接收数据
                    //readyState=3 表示正在接收服务器发送的数据,http响应头信息已经接收完成,响应数据尚未接收完成
                    //readyState=4 表示响应数据接收完成,和服务器的交互已经完成
                    if(xmlhttp.status == 200){
                        //status=404 表示未找到
                        //status=500 表示服务器内部错误
                        //服务器的响应代码是200,表示正确返回了数据
                        //xmlhttp.statusText返回服务器返回的状态码的文本信息
                        //纯文本数据的接受方法
                        var msg = xmlhttp.responseText;

                        //XML数据对应的DOM对象接受方法
                        //使用前提:要求服务器端设置 xmlhttp.setRequestHeader("Content-type", "text/xml")
                        //var domXml = xmlhttp.responseXML;

                        //向div中填充内容
                        var div = document.getElementById("msg");
                        div.innerHTML = msg;

                        //alert(array);
                        /*alert(xmlhttp.responseXML.documentElement);
                         * 判断xmlhttp.responseXML是否正确解析
                         * xmlhttp.responseXML.documentElement == null || xmlhttp.responseXML.documentElement.nodeName != ""*/
                    }
                }

            }
        </script>
    </head>
    <body>
        <h3>163邮箱注册</h3>
        邮箱名:<input id="email" type="text"/><span id="msg" style="color: red; font-size: 12px;"></span>
        <br />
        <input type="button" οnclick="submit()" value="提交"/>
    </body>
</html>
Servlet代码: (Email)

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            String email = request.getParameter("email");
            if (email.equals("") || email == null) {
                out.print("   邮箱不能为空!");
            } else {
                email = new String(email.getBytes("ISO8859-1"), "UTF-8");
                if (email.equals("zhanknow@163.com ")) {
                    out.print("   *邮箱名:[" + email + "]已经存在,请注册其它名称");
                } else {
                    out.print("   恭喜你注册成功,你可以用[" + email + "]登录了");
                }
            }
        } finally {
            out.close();
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值