• 一个简单的Ajax实例


    1、实例功能

    在注册页面里验证一个用户名是否有效。在默认情况下,提交按钮为灰色,即不能使用状态。

    当用户将焦点从【用户名】文本框中移出时,通过异步调用来判断该用户名是否已经存在。如果用户名已经存在,则在【用户名】文本框后发出文字提示。

    如果用户名不存在,也会在【用户名】文本框后发出提示,并将【提交】按钮设为可用。

    2、设计HTML页面

    <html>
        <head>
            <title>用户注册</title>
            <meta http-equiv="content-type" content="text/html;charset=gb2312">
           </head>
        <body>
            <p align="center"><b>用户注册</b></p>
            <form name="myForm">
                用户名:<input type="text" name="myName" onBlur="checkName()">
                <span id="myDiv">&nbsp;</span><br>
                输入登录密码:<input type="password" name="password1"><br>
                再次输入密码:<input type="password" name="password2"><br>
                密码查询问题:<input type="text" name="problem"><br>
                密码查询答案:<input type="text" name="key"><br>
                <input type="button" value="提交" name="submitButton" disabled>
            </form>
        </body>
    </html>

    3、创建用户名验证函数

    function checkname()
    {
    }

    4、创建XMLHttpRequest对象

    var xmlHttp = null;
                
                //创建XMLHttpRequest对象
                function creatXMLHTTP()
                {
                    //判断浏览器是否支持ActiveX控件
                    if(window.ActiveXObject)
                    {
                        //将所有可能出现的ActiveXObject版本都放在一个数组中
                        var arrXmlHttpTypes = ['Microsoft.XMLHTTP','MSXML2.XMLHTTP.6.0',,'MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP'];
                        //通过循环创建XMLHttpRequest对象
                        for(var i=0;i<arrXmlHttpTypes.length;i++)
                        {
                            try
                            {
                                //创建XMLHttpRequest对象
                                xmlHttp = new ActiveXObject(arrXmlHttpTypes[i]);
                                //如果创建XMLHttpRequest对象成功,则跳出循环
                                break;
                            }
                            catch(ex)
                            {
                            }
                        }
                    }
                    //判断浏览器是否将XMLHttpRequest作为本地对象实现
                    else if(window.XMLHttpRequest)
                    {
                        xmlHttp = new XMLHttpRequest();
                    }
                }

    5、判断XMLHttpRequest对象是否创建成功,判断第四步中创建的全局变量是否为空,创建响应XMLHttpRequest对象状态变化的函数,创建和发送HTTP请求

    将checkName()函数的代码修改如下:

                //校验用户名是否有效
                function checkName()
                {
                    //创建XMLHttpRequest对象
                    creatXMLHTTP();
                    if (xmlHttp!=null)
                    {
                        //创建响应XMLHttpRequest对象状态变化的函数
                        xmlHttp.onreadystatechange = httpStateChange;
                        //创建HTTP请求
                        xmlHttp.open("get","userName.txt",true);
                        //发送HTTP请求
                        xmlHttp.send(null);
                    }
                    else
                    {
                        alert("您的浏览器不支持XMLHTTP,请更换浏览器后再进行注册。");
                    }
                }

    6、判断异步调用是否成功,获取服务器上的数据,判断用户名是否已经注册,并在网页上发出提示。

    function httpStateChange()
                {
                    if (xmlHttp.readyState==4)
                    {
                        if (xmlHttp.status==200 || xmlHttp.status==0)
                        {
                            //获得服务器返回的数据
                            var userNames = xmlHttp.responseText;
                            var arrUserName = userNames.split(";");
                            //定义一个变量,用于判断用户名是否已经存在
                            var bFlag = false;
                            
                            for (i=0;i<arrUserName.length;i++)
                            {
                                if (arrUserName[i]==myForm.myName.value)
                                {
                                    bFlag = true;
                                    break;
                                }
                            }
                            
                            //查找节点
                            var node = document.getElementById("myDiv");
                            //更新数据
                            if (bFlag)
                            {
                                node.firstChild.nodeValue = "用户名已经存在";
                                myForm.submitButton.disabled = true;
                            }
                            else
                            {
                                node.firstChild.nodeValue = "用户名不存在,可以使用";
                                myForm.submitButton.disabled = false;
                            }
                        }
                    }
                }
  • 相关阅读:
    2.替换空格
    1.二维数组的查找
    poj 2431 expedition
    python入门第三天
    python入门第二天__练习题
    [Python3.6] print vs sys.stdout.write
    python入门第二天
    使用Flask-mail发送邮件无法连接主机
    KMP
    逆序对 线段树&树状数组 (重制版)
  • 原文地址:https://www.cnblogs.com/yulian/p/4777413.html
Copyright © 2020-2023  润新知