zoukankan      html  css  js  c++  java
  • AJAX应用之注册用户即时检测

    AJAX的无刷新机制使得在注册系统中对于注册名称的检测能即时显示。

    常见的用户注册是用户输入用户名,后台程序检测数据库中用户名是否重复而做出注册的成功与失败之提示(当用户注册重名时将返回重新注册),或者稍微人性化一点就是在用户名文本框后添加一个检测按钮,让用户检测后再做注册。

    以上操作,对于用户体验方面来说是比较“差劲”的,一个很好的用户体验就是:当用户输入完注册用户名后,Web系统应能即时检查并即时显示,并在检查和显示的同时不影响当前页面的操作。这也就是“异步获取数据”的要求,而这正是AJAX的强项

    比如如下的示例就能展现AJAX的该功能:

    程序代码:

    <script language="javascript" type="text/javascript">
    var xmlHttp = false;
    try {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e2) {
        xmlHttp = false;
      }
    }
    if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
      xmlHttp = new XMLHttpRequest();
    }

    function callServer() {
      var u_name = document.getElementById("u_name").value;
      if ((u_name == null) || (u_name == "")) return;
      var url = "cu.asp?name=" + escape(u_name);
      xmlHttp.open("GET", url, true);
      xmlHttp.onreadystatechange = updatePage;
      xmlHttp.send(null);  
    }

    function updatePage() {
      if (xmlHttp.readyState < 4) {
        test1.innerHTML="正在检测";
      }
      if (xmlHttp.readyState == 4) {
        var response = xmlHttp.responseText;
        test1.innerHTML=response;
      }
      if (test1.innerHTML=="已被注册"){
        document.form1.submit.disabled=true}else{
        document.form1.submit.disabled=false
      }
    }
    </script>


    <form name="form1" action="t1.asp" method="post" autocomplete="off">
    用户名: <input type="text" name="u_name" id="u_name" onChange="callServer();" />
     <span id="test1">是否能注册</span><br>
    密 码:<input type="password" />
     <input type="submit" name="submit" value="注册" />
    </form>

    当输入已经存在的用户名(如cnbruce、cnrose)时页面将显示重名不能注册(false),否则将显示可以注册(true),这为用户的注册提供了快速的参考,用户体验至上。

    那么下面就来说说是如何来实现这样的功能的。

    其实通过如上的t1.htm的源代码,各位就可以看到AJAX的精髓

    首先是定义XMLHttp对象


    var xmlHttp = false;
    try {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e2) {
        xmlHttp = false;
      }
    }
    if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
      xmlHttp = new XMLHttpRequest();
    }

     

    接着是自定义函数


    function callServer() {
      var u_name = document.getElementById("u_name").value;
      if ((u_name == null) || (u_name == "")) return;
      var url = "cu.asp?name=" + escape(u_name);
      xmlHttp.open("GET", url, true);
      xmlHttp.onreadystatechange = updatePage;
      xmlHttp.send(null);  
    }

     

    该函数的主要功能就是异步获得cu.asp的内容,在此前将先提取当前页表单元素“u_name”即用户名文本框zhogn 的值,通过cu.asp其后的参数及赋值而得到了不同的结果(true or false)。

    那么这里要说的即是cu.asp,他的主要功能就是接受URL参数name的值做内容显示,该内容最终被t1.htm异步获取。


    <!--cu.asp的源码示例-->

    <!--#include file="conn.asp"-->
    <%
    name=request.querystring("name")
    Set rs = Server.CreateObject ("ADODB.Recordset")
    sql = "Select * from u_ser where u_name='"&name&"'"
    rs.Open sql,conn,1,1
    if rs.eof and rs.bof then
        response.write("true")
    else
        response.write("false")
    end if
    rs.close
    set rs=nothing
    call CloseDatabase
    %>

     


    如何将异步获取的信息显示在当前页呢


    function updatePage() {
      if (xmlHttp.readyState < 4) {
        test1.innerHTML="loading...";
      }
      if (xmlHttp.readyState == 4) {
        var response = xmlHttp.responseText;
        test1.innerHTML=response;
      }
    }

     

    其中xmlHttp.readyState中的readyState表示服务器在处理请求时的进展状况,其值分别有0-4

    使用DHTML中的innerHTML可显示信息在定义的 <span id="test1">是否能注册</span> 上。

    其余表单页面就不详叙了

    AJAX应用之注册用户检测

    继续完成AJAX应用之注册用户即时检测日志评论中一些朋友的建议,做如下的功能添加:

    1,日志检测显示中文体提示
    方法:采用utf-8文件编码格式解决字符的传递

    2,根据提示,若用户名已被注册,则禁用提交表单,仅但检测该用户名可注册时还原提交按钮的功能。
    方法:判断test1.innerHTML的值,从而决定提交表单submit的disabled属性


    if (test1.innerHTML=="已被注册"){
        document.form1.submit.disabled=true}
    else{
        document.form1.submit.disabled=false
        }

  • 相关阅读:
    MySQL 性能调优之索引
    MySQL 性能调优之存储引擎
    MySQL数据类型优化—整数类型优化选择
    MySQL数据性能优化-修改方法与步骤
    MySQL设计SQL语句优化规范
    MySQL索引的设计、使用和优化
    MySQL的SQL语句优化-group by语句的优化
    SQL性能优化-order by语句的优化
    MySQL查询优化注意下面的四个细节
    优化MySQL性能的几种方法-总结
  • 原文地址:https://www.cnblogs.com/apiapia/p/1107224.html
Copyright © 2011-2022 走看看