Ajax+Servlet實現無刷新下拉聯動

下拉聯動的功能能夠說很是的經常使用,例如在選擇省、市等信息的時候;或者在選擇大類、小類的時候。總之,下拉聯動很經常使用。今天就跟你們分享一個簡單的二級下拉聯動的功能。javascript


大類下拉框:頁面加載的時候就初始化大類的下拉選項,經過後臺代碼去數據庫裏面取得數據(固然像省市這樣不變的內容能夠直接給值),而後加載到下拉選項中。html

 

  1. <selectname="region"class="select1"id="BigClass"onchange="selectProv(this)">java

  2. <optionvalue="0">--所有--</option>node

  3. <%  數據庫

  4.         Map map = ClientManager.getInstance().getRegionList();  瀏覽器

  5.         for (Iterator iter=map.entrySet().iterator(); iter.hasNext();) {  異步

  6.             Map.Entry entry = (Map.Entry)iter.next();                                         ide

  7.     %>ui

  8. <optionvalue="<%=entry.getKey() %>"><%=entry.getValue() %></option>this

  9. <%  

  10.         }  

  11.     %>

  12. </select>



 

小類下拉框:小類的下拉選項是經過Ajax將所選大類的內容異步提交到一個Servlet,而後返回相應的小類內容,最後加載到小類下拉選項中。

 

  1. <selectname="province"class="select1"id="SmallClass">

  2. <optionvalue="0">--所有--</option>

  3. </select>


 

獲取並加載小類下拉框的JS代碼:

 

[javascript] view plain copy print ?
  1. <script type="text/javascript">  

  2. function selectProv(field) {  

  3. var xmlHttp = null;  

  4. //表示當前瀏覽器不是ie,如ns,firefox

  5. if(window.XMLHttpRequest) {  

  6.             xmlHttp = new XMLHttpRequest();  

  7.         } elseif(window.ActiveXObject) {  

  8.             xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  

  9.         }  

  10. var url = "${pageContext.request.contextPath}/servlet/SelectProvServlet?regionId=" + trim(field.value) + "&time=" + new Date().getTime();  

  11. //設置請求方式爲GET,設置請求的URL,設置爲異步提交

  12.         xmlHttp.open("GET", url, true);  

  13.         xmlHttp.onreadystatechange=function() {  

  14. //Ajax引擎狀態爲成功

  15. if(xmlHttp.readyState == 4) {  

  16. //HTTP協議狀態爲成功

  17. if(xmlHttp.status == 200) {  

  18. var doc = xmlHttp.responseXML;  

  19. var items = doc.getElementsByTagName("item");  

  20. //取得小類下拉列表

  21. var provSelect = document.getElementById("SmallClass");  

  22. //清除小類下拉列表中的值

  23.                     provSelect.options.length = 0;  

  24. var o = new Option("--所有--", 0);  

  25.                     provSelect.add(o);  

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

  27. var id =items[i].childNodes[0].firstChild.nodeValue;  

  28. var name = items[i].childNodes[1].firstChild.nodeValue;  

  29. var o = new Option(name, id);  

  30.                         provSelect.add(o);  

  31.                     }  

  32.                 }else {  

  33.                     alert("請求失敗,錯誤碼=" + xmlHttp.status);  

  34.                 }  

  35.             }  

  36.         };  

  37. //將設置信息發送到Ajax引擎

  38.         xmlHttp.send(null);  

  39.     }  

  40. </script>  


具體怎麼從數據庫裏取數據就不在這裏贅述了,就是一個普通的查詢,比較簡單。二級聯動、三級聯動、多級聯動都是同樣的,就是預先加載一個下拉框的內容,而後,根據第一個的所選內容加載後面的下拉框選項,以此類推。掌握了二級聯動,其餘的也就不在話下了,也就是多加幾個下拉框的事兒。


OK,到這裏你是否是已經蠢蠢欲動、按耐不住了?心動不如行動,那就趕快動手試一試吧!歡迎交流。

相關文章
相關標籤/搜索