一个find表里面的数据,用下拉列表的形式呈现出来: fatherids是一个父级id,连着IDS
index.jsp
<body> <!-- <h1>欢迎!</h1> --> 省 <select id="province"> </select> 市 <select id="city"> </select> 区 <select id="area"> </select> </body>
/** * * @author user * 把数据库里面的find表里面的列抽象成一个数据模型 */ public class Find { private String ids ; private String ming; private String fatherids; public Find() { super(); } public Find(String ids, String ming, String fatherids) { super(); this.ids = ids; this.ming = ming; this.fatherids = fatherids; } public String getIds() { return ids; } public void setIds(String ids) { this.ids = ids; } public String getMing() { return ming; } public void setMing(String ming) { this.ming = ming; } public String getFatherids() { return fatherids; } public void setFatherids(String fatherids) { this.fatherids = fatherids; } @Override public String toString() { return "Find [ids=" + ids + ", ming=" + ming + ", fatherids=" + fatherids + "]"; } }
/** * * @author user * 三级联动中查询数据库里面的内容 */ public class FindMethod { private Connection coon; private PreparedStatement ps; private ResultSet rs; /** * * @param ids * @return List<Find> * 此方法是用来查询find表里面的信息的 */ public List<Find> selectFind ( String ids) { String sql = "select * from find f where f.fatherids = ?"; init(sql); List<Find> list = null; list = new ArrayList<Find>(); try { //此处其实可以抛出异常,在Servlet里面输出一下,这些前台也可以看见了 ps.setString(1, ids); rs = ps.executeQuery(); while(rs.next()) { Find find = new Find(rs.getString("ids"),rs.getString("ming"),rs.getString("fatherids")); list.add(find); } } catch (SQLException e) { e.printStackTrace(); } close(); return list; } public void init ( String sql) { //重载方法 coon = DBHelper.getConnection(); try { ps = coon.prepareStatement(sql); //连接的是sql } catch (SQLException e) { e.printStackTrace(); } } public void close() { //关闭资源 DBHelper.destroy(coon, ps, rs); } }
FindServlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String ids = request.getParameter("ids"); FindMethod fm = new FindMethod(); List<Find> flist = fm.selectFind(ids); JSONObject jo = new JSONObject(); if (flist.size() > 0) { jo.put("success", true); jo.put("result", flist); } else { jo.put("success", false); jo.put("result", "后台异常"); } response.getWriter().append(jo.toJSONString()); //以字符串的形式打印出来的 }
Find.js
$(function() { $.ajax({ type:"post", url:"FindServlet", data:{ ids:"0"}, dataType:"json", success:function(data) { if(data.success) { $("#province").empty(); //此目的是怕如果下面选择市的时候,之前选择的那个市不会再叠加 for (var i = 0; i < data.result.length; i++) { $("#province").append("<option value='" +data.result[i].ids+"'>" +data.result[i].ming +"</option>"); //向<select>追加内容 } } else { alert("fail"); } }, error:function(msg) { alert(22222222); } }); $("#province").change(function() { //change事件会在元素失去焦点的时候触发,也会当其值在获得焦点后改变时触发。 var ids = $(this).val(); //获取当前对象里面的value $.ajax({ type:"post", url:"FindServlet", data:{ ids:ids }, dataType:"json", success:function(data) { if(data.success) { $("#city").empty(); for (var i = 0; i < data.result.length; i++) { $("#city").append("<option value='"+data.result[i].ids+"'>"+data.result[i].ming+"</option>"); } } else { alert("fail"); } }, error:function(msg) { alert(22222222); } }); }); $("#city").change(function() { var ids = $(this).val(); $.ajax({ type:"post", url:"FindServlet", data:{ ids:ids }, dataType:"json", success:function(data) { if(data.success) { $("#area").empty(); for (var i = 0; i < data.result.length; i++) { $("#area").append("<option value='"+data.result[i].ids+"'>"+data.result[i].ming+"</option>"); } } else { alert("fail"); } }, error:function(msg) { alert(22222222); } }); }); });