首页 > 开发 > AJAX > 正文

Ajax+Servlet实现无刷新下拉联动效果

2024-09-01 08:27:02
字体:
来源:转载
供稿:网友

下拉联动的功能可以说非常的常用,例如在选择省、市等信息的时候;或者在选择大类、小类的时候。总之,下拉联动很常用。今天就跟大家分享一个简单的二级下拉联动的功能。

大类下拉框:页面加载的时候就初始化大类的下拉选项,通过后台代码去数据库里面取得数据(当然像省市这样不变的内容可以直接给值),然后加载到下拉选项中。

<select name="region" class="select1" id="BigClass" onchange="selectProv(this)">      <option value="0">--全部--</option>   <%     Map map = ClientManager.getInstance().getRegionList();     for (Iterator iter=map.entrySet().iterator(); iter.hasNext();) {       Map.Entry entry = (Map.Entry)iter.next();                       %>       <option value="<%=entry.getKey() %>"><%=entry.getValue() %></option>   <%     }   %>   </select>    

小类下拉框:小类的下拉选项是通过Ajax将所选大类的内容异步提交到一个Servlet,然后返回相应的小类内容,最后加载到小类下拉选项中。

<select name="province" class="select1" id="SmallClass">   <option value="0">--全部--</option> </select>  

获取并加载小类下拉框的JS代码:

<script type="text/javascript">   function selectProv(field) {     var xmlHttp = null;     //表示当前浏览器不是ie,如ns,firefox     if(window.XMLHttpRequest) {       xmlHttp = new XMLHttpRequest();     } else if(window.ActiveXObject) {       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");     }       var url = "${pageContext.request.contextPath}/servlet/SelectProvServlet?regionId=" + trim(field.value) + "&time=" + new Date().getTime();          //设置请求方式为GET,设置请求的URL,设置为异步提交     xmlHttp.open("GET", url, true);          xmlHttp.onreadystatechange=function() {       //Ajax引擎状态为成功       if(xmlHttp.readyState == 4) {         //HTTP协议状态为成功         if(xmlHttp.status == 200) {           var doc = xmlHttp.responseXML;           var items = doc.getElementsByTagName("item");           //取得小类下拉列表           var provSelect = document.getElementById("SmallClass");           //清除小类下拉列表中的值           provSelect.options.length = 0;           var o = new Option("--全部--", 0);           provSelect.add(o);           for (var i=0; i<items.length; i++) {             var id =items[i].childNodes[0].firstChild.nodeValue;             var name = items[i].childNodes[1].firstChild.nodeValue;             var o = new Option(name, id);             provSelect.add(o);           }         }else {           alert("请求失败,错误码=" + xmlHttp.status);         }       }     };          //将设置信息发送到Ajax引擎     xmlHttp.send(null);   } </script>             
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表