您所在的位置:首页>>编程技术

AJax实现注册用户实时反馈

点击数:1105 更新时间:2014-04-06 15:20:00 来源: 厦门网站建设-返回

一、javascript 方式

<script type="text/javascript">

function createXMLHttpReq(){

  if (window.XMLHttpRequest) {

    return new XMLHttpRequest();

    // XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

  } else if (window.ActiveXObject) {

    var aVersions = ["MSXML2.XMLHttp.6.0",

      "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0",

      "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp","Microsoft.XMLHttp"];

    for (var i = 0; i < aVersions.length; i++) {

      try {

        var oXmlHttpReq = new ActiveXObject(aVersions[i]);

        return oXmlHttpReq;

      }catch(oError){

        // 忽略引发的错误

      }

    }

  }

  throw new Error ("不能创建XMLHttpRequest对象。");

}

var oXmlHttpReq = createXMLHttpReq();

 

function sendRequest(){

  if (oXmlHttpReq) {

    try {

      var sUsername = document.form1.txtUserName.value;

 var sData = "username=" + escape(sUsername);

      if (sUsername == "") {

        document.getElementById("msg1").innerHTML = "用户名不能为空!";

        document.getElementById("msg1").style.color = "red";

        return;

      }

      oXmlHttpReq.open("POST", "checkusername.asp", true);

      // 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:

 oXmlHttpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

      oXmlHttpReq.onreadystatechange = callback;

      oXmlHttpReq.send(sData);

      // 如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据

    } catch(oErr) {

      alert("无法连接服务器:" + oErr.toString());

   }

 }

}

function callback() {

  if (oXmlHttpReq.readyState == 4) {

    if (oXmlHttpReq.status == 200) {

      // 在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。

      // 当 readyState 等于 4 且状态为 200 时,表示响应已就绪:

      var sResponse=oXmlHttpReq.responseText;

      // responseText 属性返回字符串形式的响应,因此您可以这样使用:

      // 通过td元素显示服务器响应的数据,以实现页面局部刷新

      document.getElementById("msg1").innerHTML = sResponse;

      document.getElementById("msg1").style.color = "gray";

    } else {

      alert("访问服务器出现错误:" + oXmlHttpReq.statusText + "(" + oXmlHttpReq.status + ")");

    }

  }

}

function checkData() {

  var username = document.form1.txtUserName.value;

  var password = document.form1.txtPassword.value;

  var status = true;

  if (password == "") {

      document.getElementById("msg2").innerHTML = "密码不能为空!";

      document.getElementById("msg2").style.color = "red";

      document.form1.txtPassword.focus();

      status = false;

  } else {

 document.getElementById("msg2").innerHTML = "";

  }

  if (username == "") {

      document.getElementById("msg1").innerHTML = "用户名不能为空!";

      document.getElementById("msg1").style.color = "red";

      document.form1.txtUserName.focus();

      status = false;

  } else {

 document.getElementById("msg1").innerHTML = "";

  }

  return status;

}

</script>


<form  method="post" name="form1" id="form1" action="javascript:alert('用户名:'+document.form1.txtUserName.value);" onsubmit="return checkData()">

  <div id="caption">注册新用户</div>

  <table border="0">

    <tr>

      <td><label for="txtUserName">用户名:</label></td>

      <td><input name="txtUserName" type="text" id="txtUserName"onblur="sendRequest();" />

        <span id="msg1"></span></td>

    </tr>

    <tr>

      <td><label for="txtPassword">密 码:</label></td>

      <td><input type="password" name="txtPassword" id="txtPassword" />

        <span id="msg2"></span></td>

    </tr>

    <tr>

      <td>&nbsp;</td>

      <td><input type="submit" name="btnReg" id="btnReg" value="提交" /></td>

    </tr>

  </table>

  

说明:
上述JavaScript脚本块中定义了4个函数:createXMLHttpReq、sendRequest、callback和checkData,
其中前3个与Ajax交互有关. 要检查表单数据,可将checkData函数作为form1表单的submit事件处理程序;
要实现Ajax交互,应将sendRequest函数作为txtUserName文本框的blur事件处理程序。
 此外,还要设置form1表单的action属性,以便对表单数据进行处理。为此,应当网页中表单和表单域
 属性进行设置。
 
二、Jquery 方式
 
  JQuery 对象 Ajax 交互操作进行了封装。如果使用jQuery来实现Ajax交互过程,只需用对JQuery
  对象调用 load 方法(或其他方法)即可。在本例中,下面的语句通过AJax方式向ASP服务器页面
  checkusername.asp 发送用户名信息,然后将服务器返回的HTTP响应文本显示在span元素中,并对
  span元素的文本颜色进行设置,真可谓毕其功于一役。
  
  $("#msg1").load("checkusername.asp",{username: $(this).val()}).css("color", "gray");
 
  调用load方法可加载远程HTML文件代码并插入DOM中,其中第1个参数指定要加载的HTML网页网址,
  第2个参数是可选的,用于指定要发送到服务器的key/value数据。
  如果指定了第2个参数,则自动使用post方法向服务器放松数据。

【责任编辑:CSW8923
展开