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

好久时间没有更新内容了,很多朋友对我以前写的一篇《用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());
}
%>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值