用Ajax实现多级联动下拉列表For JSP(无限级别,JSON传输数据,含全国地区数据库

来源:互联网 发布:血色衣冠武将数据 编辑:程序博客网 时间:2024/05/14 05:05

好久时间没有更新内容了,很多朋友对我以前写的一篇《用Ajax实现多级联动下拉列表(无限级别,JSON传输数据,含全国地区数据库)(原创)》感兴趣,提出原来这段代码服务器端是用asp实现的,能不能改写成JSP或者ASP.NET。说实话,对JSP我不是很熟悉,参考了一些资料,没有用struts,直接写成JSP,文后的下载包中包含一个org.json.jar,测试的时候,请将这个包加了应用服务器的lib目录中。至于For ASP.NET的,过几天再写吧。

Ajax.html文件没有太大的变化,只需要将原来的OptionServer.asp改成OptionServer.jsp。

        //发送请求,获取下一个列表框的列表数据
        //参数oValue为当前列表框的选中值,此值作为下一个列表框的parentID号
        function getNextOptions(oValue) {
            createRequest();
            var url = "OptionServer.jsp?parentid=" + oValue;
            request.open("GET", url, true);
            request.onreadystatechange = opcallback;
            request.send(null);
        }

 

OptionServer.jsp:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="org.json.JSONException" %>
<%@ page import="org.json.JSONObject" %>
<%@ page import="org.json.JSONArray" %>

<%
try
{
String spath="options//area.mdb";   //注意由网站根到文件的路径,这是将测试内容放在服务器根下面的options目录下。
String dbpath = application.getRealPath(spath); //转化成物理路径
String dbname = ""; //Acess 数据库用户名,没有则为空
String user = ""; //Acess 数据库密码,没有则为空
//数据库连接字符串 
String url ="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+dbpath; 
//加载驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//建立连接
Connection conn= DriverManager.getConnection(url); 
//创建语句对象
Statement stmt=conn.createStatement
(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
// **** 数据库连接代码 结束 *********
String ParentID=request.getParameter("parentid");
String sql;
if(ParentID=="")
   sql="select text,code from area where Parentcode is null";
else
   sql="select text,code from area where Parentcode='"+ParentID+"'";

ResultSet rs = stmt.executeQuery(sql);

JSONArray jsonOptions = new JSONArray();  
while(rs.next())
{
   JSONObject json = new JSONObject();   
   json.put("title",rs.getString("text"));   
   json.put("value", rs.getString("code"));
   jsonOptions.put(json);   
}
out.print(jsonOptions.toString());
rs.close(); //关闭记录集对象
stmt.close(); //关闭语句对象
conn.close(); //关闭连接对象

}catch(Exception e){
 out.print("数据库连接错误!,错误信息如下:<br>");
 out.print(e.getMessage());
}
%>

原创粉丝点击