本文实例讲述了jQuery+jsp实现省市县三级联动效果的方法。分享给大家供大家参考,具体如下:
在这里,用MySQL数据库存储了全国所有的省市县地区信息(点击此处下载源代码)
使用过的jar包
google的Gson.jar
mysql-connector-java-5.1.13-bin.jar
将实验图贴出来:
显示页面index.jsp
<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"UTF-8\"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\"; %> <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> <html> <head> <base href=\"<%=basePath%>\"> <title>省市区三级联动下拉菜单</title> <script type=\"text/javascript\" src=\"<%=path %>/js/jquery/jquery-1.7.min.js\"></script> <script type=\"text/javascript\" src=\"<%=path %>/js/json/json-minified.js\"></script> </head> <body> <table> <tr> <td> 省份: <select name=\"province\" id=\"province\" onchange=\"onSelectChange(this,\'city\');\"></select> 城市: <select name=\"city\" id=\"city\" onchange=\"onSelectChange(this,\'district\');\"> <option value=\"\">请选择</option> </select> 区(县): <select name=\"district\" id=\"district\"> <option value=\"\">请选择</option> </select> </td> </tr> </table> </body> </html> <script type=\"text/javascript\"> function onSelectChange(obj,toSelId){ setSelect(obj.value,toSelId); } function setSelect(fromSelVal,toSelId){ //alert(document.getElementById(\"province\").selectedIndex); document.getElementById(toSelId).innerHTML=\"\"; jQuery.ajax({ url: \"<%=path%>/getDropdownDataServlet\", cache: false, data:\"parentId=\"+fromSelVal, success: function(data){ createSelectObj(data,toSelId); } }); } function createSelectObj(data,toSelId){ var arr = jsonParse(data); if(arr != null && arr.length>0){ var obj = document.getElementById(toSelId); obj.innerHTML=\"\"; var nullOp = document.createElement(\"option\"); nullOp.setAttribute(\"value\",\"\"); nullOp.appendChild(document.createTextNode(\"请选择\")); obj.appendChild(nullOp); for(var o in arr){ var op = document.createElement(\"option\"); op.setAttribute(\"value\",arr[o].id); //op.text=arr[o].name;//这一句在ie下不起作用,用下面这一句或者innerHTML op.appendChild(document.createTextNode(arr[o].name)); obj.appendChild(op); } } } setSelect(\'1\',\'province\'); </script>
数据库交互GetDropdownDataServlet
public class GetDropdownDataServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String parentId = request.getParameter(\"parentId\"); if (parentId == null || parentId == \"\") { parentId = \"0\"; } Connection conn = null; String json = \"\"; try { Class.forName(\"com.mysql.jdbc.Driver\"); conn = DriverManager.getConnection(\"jdbc:mysql://localhost/dropdown\", \"root\", \"root\"); Statement stat = conn.createStatement(); ResultSet rs = stat .executeQuery(\"select region_id,region_name from region where parent_id = \" + parentId); ArrayList rsList = new ArrayList(); Map map = null; while (rs.next()) { map = new HashMap(); map.put(\"id\", rs.getInt(1)); map.put(\"name\", rs.getString(2)); rsList.add(map); } rs = null; Gson gson = new Gson(); json = gson.toJson(rsList); System.out.println(\"json=\" + json); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } response.setCharacterEncoding(\"UTF-8\"); response.getWriter().print(json); } }
希望本文所述对大家jQuery程序设计有所帮助。
本文地址:https://www.stayed.cn/item/2043
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我