JAVA EE 項目經常使用知識 之AJAX技術實現select下拉列表聯動的兩種用法(讓你真正理解ajax)

ajax 下拉列表聯動的用法。javascript

ajax的定義:java

 

AJAX 是一種用於建立快速動態網頁的技術。ajax

經過在後臺與服務器進行少許數據交換,AJAX 能夠使網頁實現異步更新。這意味着能夠在不從新加載整個網頁的狀況下,對網頁的某部分進行更新。json

 

ajax效果的一個例子:數組

 

區域爲空的時候,維護人狀況:瀏覽器

選了一個區域後的狀況:(選 舒城縣 聯帶出來的維護人員 小劉)服務器

 

 

1、原生態的js實現app

XMLHttpRequest 是 AJAX 的基礎異步

 

XMLHttpRequest 對象

全部現代瀏覽器均支持 XMLHttpRequest 對象(IE5 和 IE6 使用 ActiveXObject)。函數

XMLHttpRequest 用於在後臺與服務器交換數據。這意味着能夠在不從新加載整個網頁的狀況下,對網頁的某部分進行更新。

[javascript]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
 
  1. var xmlHttp;  
  2.   
  3. function createXMLHttpRequest(){  
  4. if(window.ActiveXObject){//檢查瀏覽器是否支持 XMLHttpRequest 對象  
  5. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//不支持 建立  
  6. }  
  7. else if(window.XMLHttpRequest){  
  8. xmlHttp = new XMLHttpRequest();//支持 直接new  
  9. }  
  10. }//建立一個xmlHttp 對象  
  11. function ajaxRequest(url,data,responseResult){//ajaxRequest是將請求發送到後臺的function  
  12. createXMLHttpRequest();//調用 建立一個XMLHttpRequest對象  
  13. xmlHttp.open("POST",url,true);//規定請求的類型(post)、URL 以及是否異步處理請求(是)  
  14. xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//相似HTML 表單那樣 POST 數據 的http頭  
  15. xmlHttp.onreadystatechange = responseResult;//規定在響應處於 onreadystatechange 事件中的就緒狀態時執行的函數  
  16. xmlHttp.send(data);//發送數據  
  17.   
  18. }  

 

//前臺頁面的區域select代碼:

 

[java]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
 
  1. </td>  
  2.                          <th>區域:</th>  
  3.                      <td>  
  4.                      <select style="width: 152px" name="areaId"  id="areaId"  class="select_field" onchange="getWhmans(this.value)">  
  5.                         <option value=""  style="color:#999999">-請選擇-</option>  
  6.                         <c:forEach items="${arealist}" var="area" >  
  7.                          <option value="${area.id}">${area.areaName}</option>  
  8.                         </c:forEach>  
  9.                     </select><font color="red">*</font>  
  10.                      </td>  

 

 

 

 

//前臺維護人select頁面代碼:

[java]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
 
  1. <th>維護人員:</th>  
  2.                     <td>  
  3.                           
  4.                         <select  id="whman" style="width: 152px" class="select_field" name="whman" >  
  5.                             <option value="" style="color:#999999">請選擇</option>  
  6.                               
  7.                         </select><font color="red">*</font>  
  8.                           
  9.                     </td>  

 

 

//如下是後臺的部分代碼

 

[java]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
 
  1. List<Whperson> customers = factoryBO.getFugBO().getWhperson(area);//根據區域來獲得該區域下的維護人信息 即選一個下拉框的區域後聯動另外一個下拉框帶出該區域的維護人信息  
  2.         if (customers != null) {  
  3.             JSONArray jsonArray = new JSONArray();//new一個json數組  
  4.             for (Whperson whman : customers) {  
  5.                 JSONObject obj = new JSONObject();  
  6.                 obj.put("id", whman.getId());  
  7.                 obj.put("name", whman.getName());  
  8.                 jsonArray.add(obj);//循環new jsonObject 並把維護人信息 put進去 再add到josnArray裏去  
  9.              }  
  10.             out.write(jsonArray.toString());//輸出寫到頁面 即下面的responseText裏面  
  11.         } else {  
  12.             out.write("null");  
  13.         }  
  14.         out.flush();  
  15.         out.close();  

 

[javascript]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
 
  1. function responseCustomer(){//後臺響應完成後執行的function  
  2. if(xmlHttp.readyState == 4){//4表示請求已完成 ,響應已就緒  
  3. if(xmlHttp.status == 200){//表示ok  
  4. var message=xmlHttp.responseText;//爲後臺返回過來的文本  
  5. if(message=="null"){//若沒有返回任何信息  
  6. document.getElementById("id").options.length=1;//把id='id'的option下拉框置空  
  7. return false;  
  8. }  
  9. var info2 = eval(message);  //解析一下json字符串  
  10. document.getElementById("whman").options.length=1;把id='id'的option下拉框先置空  
  11. $.each(info2, function(i,n){  
  12. document.getElementById("whman").options.add(new Option(n.gridName,n.gridId));//給下拉框option加上後臺返回的值 即增長下拉框選項  
  13. });  
  14. }  
  15. }  
  16. }  
  17. function getGridByAreaId(val){//本身寫的函數 另外一個option onchange事件觸發的函數,目的是選這個option後 想要的option能級聯  
  18. var url="village.do?method=getGridByAreaId";//請求後臺的url  
  19. var data="id="+val.value;//傳入後臺的參數  
  20. ajaxRequest(url,data,responseCustomer);//實質要調用的ajax的函數  
  21.   
  22. }  


2、Jquery ajax的實現

 

 

[javascript]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
 
  1. function getWhmans(obj){  
  2. var url="bbtj.do?method=getWhman";//請求後臺的url  
  3. $("#whman").empty();//先置空  
  4. $("#whman").append($('<option value="">-請選擇-</option>'));//加上--請選擇--選項  
  5. if($(obj).val()=="")  
  6. return;//無值,返回  
  7. url+="&areaId="+$(obj).val();//url參數  
  8. url+="&t="+(new Date()).valueOf();//url參數  
  9.   
  10. $.ajax({  
  11. url:url,  
  12. type:'POST',//POST方式  
  13. dataType:'text',//返回text類型  
  14. beforeSend:function(xmlHttpRequest,status){  
  15.     
  16. },  
  17. success:function(data,status){  
  18. var d=eval(data);//解析  
  19. $(d).each(function(index,entity){  
  20. $("#whman").append($('<option value="'+entity['id']+'">'+entity['name']+'</option>'));//後臺數據加到下拉框  
  21. });  
  22. },  
  23. complete:function(xmlHttpRequest,status){  
  24.     
  25. },  
  26. error:function(){  
  27.     
  28. }  
  29. });  
  30.   
  31. }  
相關文章
相關標籤/搜索