JavaScript入门教程

JavaScript简介
JavaScript语法基础
JavaScript流程控制
JavaScript函数
面向对象编程
JavaScript事件
JavaScript DOM
正则表达式
JavaScript BOM
AJAX

专题分析

浏览器兼容性
JS优化
Web前端开发规范
编辑器推荐
总结和笔记

学习助手

对象参考手册
ECMAScript分析
数据中心
QQ交流群

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

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

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

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

前台代码:
<p>
    请输入用户名:<input type="text" id="demo" />
    <span id="result"></span>
</p>
<script type="text/javascript">
document.getElementById("demo").onblur=function(){  // 输入框失去焦点
    var thisNode=this;
    var span=document.getElementById("result");
    var xmlhttp;
    try{
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }catch(e){
        // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function(){
        if(xmlhttp.readyState<4){  // 正在交互
            span.style.color="blue";
            span.innerHTML="正在检测...";
        }
        if (xmlhttp.readyState==4 && xmlhttp.status==200){  // 请求成功
            if(parseInt(xmlhttp.responseText)){  // 将服务器返回的数据转换为整数
            span.style.color="red";
                span.innerHTML="抱歉,您填写的用户名已经存在!";
            }else{
            span.style.color="green";
                span.innerHTML="恭喜你,填写正确!";
            }
        }
    }
    xmlhttp.open("POST","/demo/javascript/ajax/ajaxDemo.php?action=checkUserName",true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send("username="+thisNode.value);
}
</script>

后台代码(PHP):
<?php
if($_GET['action']=="checkUserName"){
    // 为简单起见,这里不再查询数据库,使用 3 个用户名作为示例
    if(
        $_POST['username']=="admin"||
        $_POST['username']=="xiaoming"||
        $_POST['username']=="zhangsan"
    ){
        echo 1;
    }else{
        echo 0;
    }
}
?>

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

请输入用户名:  


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