1. 程式人生 > >利用ajax異步校驗驗證碼(轉)

利用ajax異步校驗驗證碼(轉)

left 獲取 track eth tco lds dsm sta source

利用ajax異步校驗驗證碼


技術分享圖片

示例結果如圖所示


具體步驟如下:

step1:

jsp頁面及js腳本


[html] view plain copy print?
  1. <%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
  2. <html>
  3. <head>
  4. <title>form</title>
  5. <script type="text/javascript" src="<%=request.getContextPath()%>/js/my.js"
    ></script>
  6. <script type="text/javascript">
  7. //檢查用戶名是否存在
  8. function check_username(){
  9. //step1,獲得ajax對象
  10. var xhr = getXhr();
  11. var username = $V(‘userrname‘);
  12. //step2,使用ajax對象發請求(get/post)
  13. xhr.open(‘get‘,‘checkUsername?username
    =‘+username,true);
  14. //step3,編寫服務器端的處理程序
  15. //step4,編寫事件處理函數
  16. xhr.onreadystatechange = function(){
  17. if(xhr.readyState==4){
  18. if(xhr.status==200){
  19. //服務器訪問正常
  20. var txt
    = xhr.responseText;
  21. $(‘check_msg‘).innerHTML = txt;
  22. }else{
  23. $(‘check_msg‘).innerHTML = ‘驗證出錯‘;
  24. }
  25. }
  26. };
  27. $(‘check_msg‘).innerHTML = ‘正在驗證‘;
  28. xhr.send(null);
  29. }
  30. //檢查驗證碼是否正確
  31. function check_number(){
  32. var xhr = getXhr();
  33. var code = $V(‘code‘);
  34. xhr.open(‘get‘,‘checkNumber?code=‘+code,true);
  35. xhr.onreadystatechange = function(){
  36. if(xhr.readyState==4){
  37. if(xhr.status==200){
  38. //服務器訪問正常
  39. var txt = xhr.responseText;
  40. $(‘code_msg‘).innerHTML = txt;
  41. }else{
  42. $(‘code_msg‘).innerHTML = ‘驗證出錯‘;
  43. }
  44. }
  45. };
  46. $(‘code_msg‘).innerHTML = ‘正在驗證‘;
  47. xhr.send(null);
  48. }
  49. </script>
  50. </head>
  51. <body>
  52. <form action="" method="post">
  53. <fieldset>
  54. <legend>登陸</legend>
  55. <!-- <a href="javascript:;" onclick="alert(getXhr())">測試獲取ajax對象</a> -->
  56. 用戶名:<input id="userrname" name="username" onblur="check_username();">
  57. <span id="check_msg" style="color:red;"></span><br/>
  58. 密碼:<input name="pwd" type="password"><br/>
  59. 驗證碼:<img id="image" src="checkcode" onclick="this.src=‘checkcode?‘+(new Date()).getTime()">
  60. <a href="javascript:;" onclick="$(‘image‘).src=‘checkcode?‘+(new Date()).getTime()">換一張</a>
  61. <input id="code" name="code" onblur="check_number();"/><span id="code_msg" style="color:red;"></span><br/>
  62. <input type="submit" value="提交"><br/>
  63. </fieldset>
  64. </form>
  65. </body>
  66. </html>


my.js代碼:封裝的幾個常用函數

[javascript] view plain copy print?
  1. //根據id獲取節點
  2. function $(id){
  3. return document.getElementById(id);
  4. }
  5. //根據id獲取節點的值
  6. function $V(id){
  7. return $(id).value;
  8. }
  9. //獲取ajax對象
  10. function getXhr(){
  11. var xhr = null;
  12. if(window.XMLHttpRequest){
  13. xhr = new XMLHttpRequest();
  14. }else{
  15. xhr = new ActiveXObject(‘Microsoft.XMLHttp‘)
  16. }
  17. return xhr;
  18. }


具體細節見代碼



利用ajax異步校驗驗證碼(轉)