AJAX实例-检测用户名是否存在

 
用户注册时,需要填写个人信息,其中包括用户名。当用户输入完成时,JavaScript 需要及时检测用户名是否存在,如果存在给出提示,请用户更换用户名。

当然,这个步骤可以在用户提交表单以后由后台程序检测,如果用户名已存在,用户需要返回注册页面重新填写用户名,而前面填写的其他信息也随着网页的跳转已经过期,全部需要重填,这对用户来说是极大的伤害。

因此,有必要使用 AJAX 在用户不提交信息的情况下及时检测用户名是否存在。

前台代码:

  1. <p>
  2. 请输入用户名:<input type="text" id="demo"/>
  3. <span id="result"></span>
  4. </p>
  5. <script type="text/javascript">
  6. document.getElementById("demo").onblur=function(){// 输入框失去焦点
  7. var thisNode=this;
  8. var span=document.getElementById("result");
  9. var xmlhttp;
  10. try{
  11. // code for IE7+, Firefox, Chrome, Opera, Safari
  12. xmlhttp=newXMLHttpRequest();
  13. }catch(e){
  14. // code for IE6, IE5
  15. xmlhttp=newActiveXObject("Microsoft.XMLHTTP");
  16. }
  17. xmlhttp.onreadystatechange=function(){
  18. if(xmlhttp.readyState<4){// 正在交互
  19. span.style.color="blue";
  20. span.innerHTML="正在检测...";
  21. }
  22. if(xmlhttp.readyState==4&& xmlhttp.status==200){// 请求成功
  23. if(parseInt(xmlhttp.responseText)){// 将服务器返回的数据转换为整数
  24. span.style.color="red";
  25. span.innerHTML="抱歉,您填写的用户名已经存在!";
  26. }else{
  27. span.style.color="green";
  28. span.innerHTML="恭喜你,填写正确!";
  29. }
  30. }
  31. }
  32. xmlhttp.open("POST","http://localhost/moyu.php?action=checkUserName",true);
  33. xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  34. xmlhttp.send("username="+thisNode.value);
  35. }
  36. </script>
 

后台代码(PHP):

  1. <?php
  2. if($_GET['action']=="checkUserName"){
  3. // 为简单起见,这里不再查询数据库,使用 3 个用户名作为示例
  4. if(
  5. $_POST['username']=="admin"||
  6. $_POST['username']=="xiaoming"||
  7. $_POST['username']=="zhangsan"
  8. ){
  9. echo 1;
  10. }else{
  11. echo 0;
  12. }
  13. }
  14. ?>
 

实例演示(输入完成,请将焦点离开输入框):

请输入用户名:

说明:"admin"、"xiaoming"和"zhangsan"三个用户名已存在。

 
 
魔芋测试:
 
 
 

【05】AJAX实例-检测用户名是否存在(实例)的更多相关文章

  1. Struts2+Ajax实现检测用户名是否唯一

    搞了慢慢两天,终于弄明白了怎么在Struts2框架中使用Ajax检测用户名的存在了.虽然,比起那些大牛们来,这速度确实够慢的,不过,最终弄出来还是满满的成就感啊. 闲话休提,言归正传.直接上代码: A ...

  2. 利用jQuery和Ajax实现检测用户名是否已经被注册

    这是一个jQuery和Ajax的很基础的应用,是我出去面试时的一个面试题.当时脑子有点懵想了好久才知道该怎么去实现,现在回来再看了下书好好总结一下这个东西. 首先新建一个html文件,只有简单的几行代 ...

  3. Ajax检测用户名是否已经注册

    程序功能 当用户名输入完成(即用户名输入框失去焦点),利用Ajax检测用户名是否已经注册! 实现过程 利用Ajax向CheckUserServlet发送请求,判断该用户名是否可用.这里只是为了演示Aj ...

  4. asp.net ajax 检测用户名是否可用代码

    原文  asp.net ajax 检测用户名是否可用代码 .net ajax 检测用户名是否可用代码 <script type="text/网页特效" src="c ...

  5. ajax 检测用户名是否可用

    下面是一个 ajax 检测用户名是否可用的例子. django  项目中. —— views.py 里—— from django.shortcuts import render,HttpRespon ...

  6. PHP+Ajax实现文章心情投票功能实例

    一个PHP+Ajax实现文章心情投票功能实例,可以学习了解实现投票的基本流程:通过ajax获取心情图标及柱状图相关数据,当用户点击其中的一个心情图标时,向Ajax.php发送请求,PHP验证用户coo ...

  7. ajax实现注册用户名时动态显示用户名是否已经被注册(1、ajax可以实现我们常见的注册用户名动态判断)(2、jquery里面的ajax也是类似我们这样封装了的函数)

    ajax实现注册用户名时动态显示用户名是否已经被注册(1.ajax可以实现我们常见的注册用户名动态判断)(2.jquery里面的ajax也是类似我们这样封装了的函数) 一.总结 1.ajax可以实现我 ...

  8. 官网实例详解-目录和实例简介-keras学习笔记四

    官网实例详解-目录和实例简介-keras学习笔记四 2018-06-11 10:36:18 wyx100 阅读数 4193更多 分类专栏: 人工智能 python 深度学习 keras   版权声明: ...

  9. Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别

    一.Java的反射机制   每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图:   其中

随机推荐

  1. DFS(深度) hihoCoder挑战赛14 B 赛车

    题目传送门 题意:中文题面 分析:放官方题解,就是从1为根节点深搜记录节点的深度,选出最大的深度的点,将该到达该点的节点都vis掉,然后再重新计算没有vis的点的深度,找最大的相加就是答案.放张图好理 ...

  2. set和get方法

    package day02; public class Person { /**为了封装,一般的属性都设置成为private(私有的),所以你无法用 .属性 的方式来得到属性值, * 因此此时用两个p ...

  3. rabbitmq实践笔记(一):安装、配置与使用初探

    引言: 对于一个大型的软件系统来说,会有很多的组件.模块及不同的子系统一起协同工作,模块之间的通信需要一个可靠的通信管道来保证 ,通信管道需要解决解决很多问题,比如: 1)信息的发送者和接收者如何维持 ...

  4. c#如何使用replace函数将"\"替换成"\\"

    当我使用 String str="c:\aa.xls"; str=str.Replace("\","\\");时,括号为红色错误的,那么如何 ...

  5. 443 String Compression 压缩字符串

    给定一组字符,使用原地算法将其压缩.压缩后的长度必须始终小于或等于原数组长度.数组的每个元素应该是长度为1 的字符(不是 int 整数类型).在完成原地修改输入数组后,返回数组的新长度.进阶:你能否仅 ...

  6. [转]Business Model Canvas(商业模式画布):创业公司做头脑风暴和可行性测试的一大利器

    本文转自:http://www.36kr.com/p/214438.html 本文来自First Round Review,他们准备的文章既讲故事,还同时向创业者提供可操作的建议,以助力打造优秀的公司 ...

  7. Java对象创建

    今天发现一个问题: 如果加上第一个输出,那么两个per1的对象是不一样的,如果不加,那么下一个输出的对象的是和第一个是一致的? 思考为什么???? 代码如下: package com.lgq.serv ...

  8. es6核心特性-数组扩展

    1. Array.from() : 将伪数组对象或可遍历对象转换为真数组 如果一个对象的所有键名都是正整数或零,并且有length属性,那么这个对象就很像数组,称为伪数组.典型的伪数组有函数的argu ...

  9. WPF 实时绘图的逻辑

    实时绘图实际上是两个线程.外部线程直接用thread,只有到绘图那个逻辑才用绘图控件的mycanvas2.Dispatcher.Invoke. 或者说,INVOKE并不是开线程,只是一个绘图的委托而已 ...

  10. 详解Android Activity启动模式

    相关的基本概念: 1.任务栈(Task)   若干个Activity的集合的栈表示一个Task.   栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于 ...