【ajax入门】使用Ajax异步实现用户名异步校检

【功能描述】 我们在注册网站的通常都需要填写用户名,但我们输入我们喜欢的用户名的鼠标离开输入框,有时会提醒 用户名已被注册,但是网页上的其它内容却没有更新。这就是异步实现。

下面我们描述是怎样实现的。(ajax+Servlet)

前台代码:

<div id="register" class="div_cntent">
      <form name="form1">
        <table>
            <tr>
                <th align="center" colspan="2">用户注册</th>
            </tr>
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="reg_name" id="reg_name" onblur="checkName()" /><span id="name_tip"></span></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" name="reg_password" id="reg_password" /><span id="password_tip"></span></td>
            </tr>
            <tr>
                <td><input type="button" value="注册" class="btn_style" /></td>
                <td><input type="reset" value="重置" class="btn_style"/></td>                
            </tr>            
        </table>
       </form>    
    </div>

使用 onblur=“checkName()”表示鼠标在用户名文本框失去焦点时调用 checkName()方法

JS代码

/*
 * ajax异步检测用户名
 * */
 
function checkName(){
    var xmlhttpChk; // 穿件xmlHttpRequest对象 ,XMLHttpRequest 用于在后台与服务器交换数据。
    var reg_name = document.getElementById("reg_name").value;
    // 判断浏览器的问题:由于不同浏览器创建xmlhttp方式不同
    // 所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。
    if(window.XMLHttpRequest){
        xmlhttpChk = new XMLHttpRequest();    // 火狐,谷歌,opera……
    }else{
        xmlhttpChk = new ActiveXObject();  //  IE5 IE6……
    }
    
    // 请规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数
    xmlhttpChk.onreadystatechange = function(){
    /*
   * 存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
   *	 0: 请求未初始化
   *     1: 服务器连接已建立
   *     2: 请求已接收
   *     3: 请求处理中
   *     4: 请求已完成,且响应已就绪
   * status 
    *   200:   表示  OK
   *    400: 表示“未找到页面”
    *  */
        if(xmlhttpChk.readyState == 4 && xmlhttpChk.status == 200){  
            alert(xmlhttpChk.responseText);
            // 使用JSONObject对象必须使用eval()方法把返回的数据转换为对象
            var resultObj = eval("("+xmlhttpChk.responseText+")");          
            if(resultObj.exist){
               //  用户名已存在
                document.getElementById("name_tip").innerHTML = "<font color=‘#f00‘>用户名已存在</font>";
               // 用户名可用
           }else{
                document.getElementById("name_tip").innerHTML = "<font color=‘#0f0‘>用户名可用</font>";
            }            
        }        
    };    
    
    // 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:
    xmlhttpChk.open("get", "checkName?reg_name="+reg_name, true);
    xmlhttpChk.send();
   
    /* 
    open(method,url,async)    
	  规定请求的类型、URL 以及是否异步处理请求。
	  method:请求的类型;GET 或 POSTurl:文件在服务器上的位置async:true(异步)或 false(同步)	    
    send(string)    
	将请求发送到服务器。
	string:仅用于 POST 请求    
   */
}

上面代码就是是使用ajax异步实现用户名校检

var xmlhttpChk;
    var reg_name = document.getElementById("reg_name").value;
    // 判断浏览器的问题
    if(window.XMLHttpRequest){  
        xmlhttpChk = new XMLHttpRequest();
    }else{  
        xmlhttpChk = new ActiveXObject();
    }

后台代码

@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String reg_name = request.getParameter("reg_name");
        reg_name = new String(reg_name.getBytes("ISO8859-1"),"UTF-8");
        System.out.println(reg_name);
        // 创建Json对象
        JSONObject resultJson = new JSONObject();
        if("Allen".equals(reg_name)){
            resultJson.put("exist", true); // 表示用户名已存在
        }else{
            resultJson.put("exist", false); // 表示用户名不存在
        }    
        out.print(resultJson);
        out.flush();
        out.close();
    }

最后再 配置 web.xml 和拷贝下面几个文件到 lib文件中

到这里下载

<!-- 用户验证 -->
  <servlet>
      <servlet-name>CheckNameServlet</servlet-name>
    <servlet-class>com.ajax.web.CheckNameServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>CheckNameServlet</servlet-name>
      <url-pattern>/checkName</url-pattern>
  </servlet-mapping>
时间: 2024-08-27 12:47:30

【ajax入门】使用Ajax异步实现用户名异步校检的相关文章

【java项目实践】详解Ajax工作原理以及实现异步验证用户名是否存在+源码下载(java版)

一年前,从不知道Ajax是什么,伴随着不断的积累,到现在经常使用,逐渐有了深入的认识.今天,如果想开发一个更加人性化,友好,无刷新,交互性更强的网页,那您的目标一定是Ajax. 介绍 在详细讨论Ajax是什么之前,先让我们花一分钟了解一下Ajax做什么.如图所示: 如上图展示给我们的就是使用Ajax技术实现的效果.伴随着web应用的越来越强大而出现的是等待,等待服务器响应,等待浏览器刷新,等待请求返回和生成新的页面成为了程序员们的最最头疼的难题.随着Ajax的出现使web应用程序变得更完善,更友

ajax异步验证用户名密码,提示路径错误

使用thinkphp框架异步验证用户名和密码的时候,ajax路径错误可能有多重情况.我遇到的是,我自感路径没问题,且先前使用无错.由于多人合作使用svn,所以在更新代码后,使用firebug显示一直是路径错误.这是和数据库有关,没连接数据库.我的搭档把端口号配置了,改了大家常用的mysql3306的端口号.自己改回即可.

AJAX入门--- XMLHttpRequest对象的属性和方法

由于刚刚接触到Ajax对其比较陌生,而其中的XMLHttpRequest对象更是未曾听闻.开始学之前,了解一下它的属性和方法为它的使用做下铺垫.本文重点介绍XMLHttpRequest的属性和方法. XMLHttpRequest对象的属性和事件 属性 描述 readyState 表示XMLHttpRequest对象的状态[1] responseText 包含客户端接收到的HTTP相应的文本内容[2] responseXML 服务器响应的XML内容对应的DOM对象[3] status 服务器返回h

ajax入门详解

l 一个实例 在开始正式讲解 Ajax之前,首先让我们先来看看Google Map使用Ajax改善其产品设计的效果. 1. 在浏览器地址栏中输入http://maps.google.com打开Google Map的界面. 2. 在页面顶端的搜索框中输入“China”,单击“Search”按钮. 3. 单击地图右上角的“Satellite”按钮,切换到卫星界面. 4. 调整地图左上角的尺寸,方法或者缩小当前区域.可以看到,地图区域的图象根据标尺的位置快速的变换. 5. 按住鼠标左键,拖拽地图,地图

简易 Ajax 入门案例

<html> <body> <form name="myForm"> 用户: <input type="text" name="username" /> 时间: <input type="text" name="time" /> </form> </body> </html> private DataTable

Ajax 入门笔记

AJAX =Asynchronous Javascript + XML,是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. XMLHttpRequest 是 AJAX 的基础.XMLHttpRequest 用于在后台与服务器交换数据.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 1:创建 XMLHttpRequest 对象 为

Ajax入门学习原始代码

<script type="text/javascript">        window.onload = function () {            //1.创建xmlhttprequest对象            var xhr = createXHR();            function createXHR() {//为了兼容新老IE的版本                var request;                if (typeof(X

ASP.NET AJAX入门系列(9):在母版页中使用UpdatePanel

ASP.NET AJAX入门系列(9):在母版页中使用UpdatePanel 本文简单介绍一下在母版页中使用UpdatePanel控件,翻译自官方文档. 主要内容 1.添加UpdatePanel控件到Content Page 2.通过Master Page刷新UpdatePanel 一.添加UpdatePanel控件到Content-Page 1.添加一个新的Master Page,并切换到设计视图. 2.在工具箱中AJAX Extensions标签下双击ScriptManager控件添加到页面

ASP.NET AJAX入门系列(8):自定义异常处理

ASP.NET AJAX入门系列(8):自定义异常处理 在UpdatePanel控件异步更新时,如果有错误发生,默认情况下会弹出一个Alert对话框显示出错误信息,这对用户来说是不友好的,本文看一下如何在服务端和客户端脚本中自定义异常处理,翻译自官方文档. 主要内容 1.在服务端自定义异常处理 2.在客户端脚本中自定义异常处理 一.在服务端自定义异常处理 1.添加ASPX页面并切换到设计视图. 2.在工具箱中AJAX Extensions标签下双击ScriptManager和UpdatePane