自己實現的ajax表單驗證

來源:互聯網
上載者:User

 今天學習ajax的時候,實現了ajax表單驗證功能。表單的驗證有了ajax的應用給使用者帶來了更好的體驗,使用者無需等待,ajax在後台與伺服器互動並返回檢驗使用者的資訊響應。

index.html:介面檔案,主要是呈現表單的結構,以及引入css和js的檔案。

validate.css:樣式表,實現樣式的檔案。

validate.js:js檔案,主要實現功能的調用。

1、建立ajax中的XMLHttpRequest對象,在後台與伺服器檔案互動,及時的返回資訊。

 
  1. //建立XMLHttpRequest對象 
  2. var xmlhttp = createXmlHttpObject(); 
  3. var serverAddress = 'validate.php'; 
  4. function createXmlHttpObject(){ 
  5.     var xmlhttp; 
  6.     try{ 
  7.         xmlhttp = new XMLHttpRequest(); 
  8.     }catch(e){ 
  9.         try{ 
  10.             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
  11.         }catch(e){} 
  12.     } 
  13.     if(!xmlhttp){ 
  14.         alert("Error creating XMLHttpRequest object"); 
  15.     }else{ 
  16.         return xmlhttp; 
  17.     } 
  18. }   

2、調用伺服器上的檔案

 
  1. //調用伺服器上的指令檔 
  2.   function validate(value,fieldID){ 
  3.       if(xmlhttp){ 
  4.           try{ 
  5.               //僅在閒置時候並的時候繼續 
  6.               if((xmlhttp.readyState == 0 || xmlhttp.readyState == 4) ){ 
  7.                   //構造一個伺服器請求來驗證取出的資料 
  8.                   xmlhttp.open('GET',serverAddress+'?value='+value+'&fieldID='+fieldID,true); 
  9.                   xmlhttp.onreadystatechange = handleRequestChange; 
  10.                   xmlhttp.send(null); 
  11.               } 
  12.           }catch(e){ 
  13.               alert('Error:'+e.toString()); 
  14.           } 
  15.       } 
  16.   } 

3、處理http請求的函數

 

 
  1. //處理http響應的函數 
  2. function handleRequestChange(){ 
  3.     //當readyState為4時,讀取伺服器響應 
  4.     if(xmlhttp.readyState == 4){ 
  5.         // 當http狀態為'ok'時繼續 
  6.         if(xmlhttp.status == 200){ 
  7.             try{ 
  8.                 //從伺服器讀取響應 
  9.                 readResponse(); 
  10.             }catch(e){ 
  11.                 alert('Error:'+e.toString()); 
  12.             } 
  13.         }else{ 
  14.         alert('Error:'+xmlhttp.statusText); 
  15.         }    
  16.     } 

4、讀取伺服器響應

 

 
  1. //讀取伺服器響應 
  2. function readResponse(){ 
  3.     //擷取文件項目 
  4.     var xmlresponse = xmlhttp.responseXML; 
  5.      
  6.     result = xmlresponse.getElementsByTagName('result')[0].firstChild.data; 
  7.     fieldID = xmlresponse.getElementsByTagName('fieldid')[0].firstChild.data; 
  8.  
  9.     //找到顯示錯誤的html元素 
  10.     document.getElementById(fieldID+'Failed').className = (result == '0') ? 'error' : 'hidden'; 

validate.php與validate.class.php:伺服器上指令檔,用於返回使用者輸入資訊的響應。

 
  1. require('validate.class.php'); 
  2.  
  3. $validator = new Validate(); 
  4.  
  5. $value = $_GET['value']; 
  6. $fieldID = $_GET['fieldID']; 
  7.  
  8. //建立一個新的xml檔案 
  9. $dom = new DOMDocument(); 
  10. $response = $dom->createElement('response'); 
  11. $dom->appendChild($response); 
  12. //建立result節點 
  13. $result = $dom->createElement('result'); 
  14. $response->appendChild($result); 
  15. $resultText = $dom->createTextNode($validator->ValidateAjax($value,$fieldID)); 
  16. $result->appendChild($resultText); 
  17.  
  18. //建立fieldid節點 
  19. $fieldid = $dom->createElement('fieldid'); 
  20. $response->appendChild($fieldid); 
  21. $fieldidText = $dom->createTextNode($fieldID); 
  22. $fieldid->appendChild($fieldidText); 
  23.  
  24. //在一個字元變數中建立xml結構 
  25. $xmlString = $dom->saveXML(); 
  26. //清除任何輸出資料流,否則會不能通過document.getElementsByTagName()方法訪問'<result>'和'<fieldid>'元素 
  27. if(ob_get_length) ob_clean(); 
  28. //輸出xml字串 
  29. echo $xmlString; 

config.php:用於初始化,定義串連資料庫的檔案。

 
  1. define ('HOST','localhost'); 
  2. define ('USER','joe'); 
  3. define ('PASSWORD','123'); 
  4. define ('DATABASE','ajax'); 

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/132Q33559-0.jpg" border="0" alt="" />

 

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/132Q31493-1.jpg" border="0" alt="" />

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/132Q3Ga-2.jpg" border="0" alt="" />

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.