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;}}}}

转载于:https://www.cnblogs.com/yulian/p/4777413.html

一个简单的Ajax实例相关推荐

  1. 一个简单的Ajax开发框架

    根据Ajax与XMLHttpRequest对象一文的介绍,我们可以开发一个简单的Ajax框架供以后开发应用. 首先要知道Ajax的开发流程: 1:初始化XMLHttpRequest,这一步要考虑跨浏览 ...

  2. ajax登陆返回值判断,一个简单的ajax用户登陆返回值问题?有代码

    一个简单的ajax用户登陆返回值问题?有代码 來源:互聯網  2009-11-13 11:55:56  評論 分類: 電腦/網絡 >> 程序設計 >> 其他編程語言 問題描述: ...

  3. Java Tread多线程(0)一个简单的多线程实例

    作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39341887 本文演示,一个简单的多线程实例,并简单分析一下线程. 编程多 ...

  4. 递归算法(python),汉诺塔问题,斐波那契数列,一个简单的递归实例,用递归实现阶乘,用递归查看目录及文件

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行! 如有转载,请 ...

  5. 使用jQuery来实现一个简单的ajax请求

    下面的程序使用ajax来实现一个简单的ajax请求 JSP页面代码 <%@ page language="java" import="java.util.*&quo ...

  6. Qt5.9一个简单的多线程实例(类QThread)(第一种方法)

    Qt开启多线程,主要用到类QThread.有两种方法,第一种用一个类继承QThread,然后重新改写虚函数run().当要开启新线程时,只需要实例该类,然后调用函数start(),就可以开启一条多线程 ...

  7. jsonrpc php使用,php实现的一个简单jsonrpc框架实例

    php实现的一个简单jsonrpc框架实例json rpc 是一种以json为消息格式的远程调用服务,它是一套允许运行在不同操作系统.不同环境的程序实现基于Internet过程调用的规范和一系列的实现 ...

  8. 《ANSYS Workbench 14有限元分析自学手册》——1.7 一个简单的分析实例

    本节书摘来自异步社区<ANSYS Workbench 14有限元分析自学手册>一书中的第1章,第1.7节,作者: 吕建国 , 康士廷 更多章节内容可以访问云栖社区"异步社区&qu ...

  9. 一个简单的HTML实例

    一个简单的HTML实例 适合新手的一个简单的HTML实例 <!DOCTYPE html> <html lang="zh"> <head>< ...

最新文章

  1. iOS 不同机型屏幕适配
  2. Google Maps Android API v2官网例子使用说明
  3. 最新全球自由职业技能单日排行
  4. 如何计算两个日期之间相差的天数?
  5. python函数可变长参数_day14 Python函数之可变长参数
  6. java日期用什么属性_java日期以及使用Java反射机制遍历实体类的属性和类型
  7. 如何把即时通讯软件做大做强?
  8. java character类
  9. 做企业:什么都可以外包么
  10. 什么是程序员的优良品质
  11. oracle和redis关联查询,redis与oracle之间如何可以实现数据同步
  12. 深度剖析Spring Cloud底层原理
  13. cc语言取消引用_「初识C语言」编译过程
  14. Spring Servlet 拦截器 过滤器
  15. android jni stl,Android NDK中C++ STL库动态和静态链接
  16. ios服务器停止响应怎么办,iPhone 应用停止响应或意外关闭怎么办
  17. wps参考文献乱码。英文的行间距怎么调?
  18. 华擎计算机主板配置,组装的华擎主板win10改win7系统及bios设置教程
  19. Visual Studio 2013安装使用方法
  20. RS485调试的几个要点

热门文章

  1. mysql下载64位 win7_win7 64位安装MySQL 绝对经典
  2. 理解ROS Navigation Stack,看完这篇你就知道啦!
  3. 干部年龄大 计算机水平,各级别公务员“晋升年龄表”来了,超过这个年龄,以后基本上没戏...
  4. Service Mesh 落地挑战
  5. crontab 执行时间与系统时间不一致问题解决
  6. php 三色排序,一个数组中只有0,1,2三种元素,要求对这样的数组进行排序,一个数组中只有0,1,2三种元素,要求对这样的数组进行排序,第2章 排序 | | 第17节 三色排序练习题...
  7. solaris oracle 磁盘阵列,RAID-1 和 RAID-0 卷要求和原则
  8. linux -rpm,linux 的rpm命令
  9. 待支付取件费用是什么意思_1元保管费与直接取件,你赞赏丰巢快递柜了吗?...
  10. js 获取中括号里面字符串_一日一技:一次性把字符串用多个分隔符分割