用户操作
[即时聊天] [发私信] [加为好友]
苏华新ID:AWUSOFT
12111次访问,排名9445好友103人,关注者191
AWUSOFT的文章
原创 28 篇
翻译 0 篇
转载 10 篇
评论 34 篇
最近评论
AWUSOFT:我不是专业的DBA,希望大家见谅
AWUSOFT:我不是专业的DBA,希望大家见谅
AWUSOFT:我不是专业的DBA,希望大家见谅
AWUSOFT:我不是专业的DBA,希望大家见谅
AWUSOFT:我不是专业的DBA,希望大家见谅
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Ajax实现三级联动下拉框收藏

    新一篇: 失业后的迷茫 | 旧一篇: 安装环境

    现在的假设为省市区三级.数据库中有相应的三个表

    CREATE TABLE [dbo].[area] (
     
    [id] [int] NOT NULL ,
     
    [areaID] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
     
    [area] [nvarchar] (60) COLLATE Chinese_PRC_CI_AS NULL ,
     
    [father] [nvarchar] (6) COLLATE Chinese_PRC_CI_AS NULL 
    ON [PRIMARY]
    GO

    CREATE TABLE [dbo].[city] (
     
    [id] [int] NOT NULL ,
     
    [cityID] [nvarchar] (6) COLLATE Chinese_PRC_CI_AS NULL ,
     
    [city] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
     
    [father] [nvarchar] (6) COLLATE Chinese_PRC_CI_AS NULL 
    ON [PRIMARY]
    GO

    CREATE TABLE [dbo].[province] (
     
    [id] [int] NOT NULL ,
     
    [provinceID] [nvarchar] (6) COLLATE Chinese_PRC_CI_AS NULL ,
     
    [province] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL 
    ON [PRIMARY]
    GO

     

    显示页面showinof.jsp

     

    <%@ page pageEncoding="GBK"%>
    <jsp:directive.page import="java.sql.*" />
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     
    <HEAd>
      
    <TITLE>Ajax实现三级联动下拉框</TITLE>
      
    <script type="text/javascript">
                
    if (window.ActiveXObject && !window.XMLHttpRequest) {
                    window.XMLHttpRequest
    =function() {
                        
    return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 6'!= -1? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
                    }
    ;
                }
    //取得XMLHttpRequest对象     
                var req;
                var flagSelect;
                function testName(flag,value)
    //使用Ajax访问服务器
                {
                 flagSelect 
    = flag; //标记一下当前是选择省,还是选择市
                 req=new XMLHttpRequest();
                 
    if (req) 
                 
    {
                     req.onreadystatechange
    =setValue;
                 }

                    req.open(
    'POST',"getinfo.jsp?flag="+flag+"&value="+value);//把参数带到服务器中
                    req.setRequestHeader('Content-Type''application/x-www-form-urlencoded');
                    req.send(
    null);
             }

                function setValue()
                
    {
                    
    if (req.readyState==4 )//访问到服务器
                    {           
                        
    if(req.status==200)//正确返回
                        {    
                            
    if(flagSelect=="1")//如果选择某个省要更新市和区
                            {
                                var v
    =req.responseText.split("||");//req.responseText是服务器返回来的字符串
                                paint(document.all("shi"),v[0]);//更新市下拉框
                                paint(document.all("qu"),v[1]);//更新区下拉框
                            }

                            
    if(flagSelect=="2")//如果选择某市,只需改变区
                            {
                                var v
    =req.responseText;
                                paint(document.all(
    "qu"),v);//更新区下拉框
                            }

                        }

                    }

                }

                function paint(obj,value)
    //根据一对数据去更新一个下拉框
                {
                    var ops 
    = obj.options;
                     var v
    =value.split(";");//得到一些数据,(修改过了..)
                        while(ops.length>0)//先清空原来的数据
                        {
                          ops.remove(
    0);
                        }

                        
    for(var i=0;i<v.length-1;i++)//把新得到的数据显示上去
                        {
                            var o 
    = document.createElement("OPTION");//创建一个option把它加到下拉框中
                            o.value=v[i].split(",")[0];
                            o.text
    =v[i].split(",")[1];
                            ops.add(o);
                        }

                }

                
    </script>
     
    <body>
      
    <%
      
    try {
      Class.forName(
    "com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
      Connection conn 
    = DriverManager.getConnection(
        
    "jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=hibernate",
        
    "sa""");
      ResultSet rs 
    = conn.createStatement().executeQuery("select * from province order by provinceID");
      
    %>
      
    <table>
       
    <tr>
        
    <td><select name="pro" onchange="testName(1,this.value);">
          
    <%
          
    while (rs.next()) {
           out.println(
    "<option value='" + rs.getString("provinceID")
           
    + "'>" + rs.getString("province"+ "</option>");
          }

          
    %>
         
    </select>
        
    </td>

        
    <%
         rs 
    = conn.createStatement().executeQuery(
           
    "select * from city  t2 where t2.father=(select min(t1.provinceID) from province t1)   order by cityID");
        
    %>
        
    <td><select name="shi" onchange="testName(2,this.value);">
          
    <%
          
    while (rs.next()) {
           out.println(
    "<option value='" + rs.getString("cityID")
           
    + "'>" + rs.getString("city"+ "</option>");
          }

          
    %>
         
    </select>
        
    </td>

        
    <%
        rs 
    = conn.createStatement().executeQuery(
            
    "select * from area  t3 where t3.father=(select min(t2.cityid) from city t2 where t2.father=(select min(t1.provinceID) from province t1) )   order by areaid");
        
    %>

        
    <td><select name="qu">
          
    <%
          
    while (rs.next()) {
           out.println(
    "<option value='" + rs.getString("areaid")
           
    + "'>" + rs.getString("area"+ "</option>");
           }

            rs.close();
            conn.close();
           }
     catch (Exception e) {
            e.printStackTrace();
           }

          
    %>
         
    </select>
        
    </td>
       
    </tr>
      
    </table>
     
    </body>
    </HTML>

    取得数据库页面getinfo.jsp

     

    <%@ page pageEncoding="GBK"%>
    <jsp:directive.page import="java.sql.*" />
    <jsp:directive.page import="java.io.IOException" />
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
        
    <body>
            
    <%
                response.setContentType(
    "text/xml; charset=GBK");
                out.clear();
                
    try {
                    String flag 
    = request.getParameter("flag");
                    String value 
    = request.getParameter("value");
                    
    if (flag == null{
                        
    return;
                    }

                    StringBuffer values 
    = new StringBuffer("");
                    Class.forName(
    "com.microsoft.jdbc.sqlserver.SQLServerDriver")
                    .newInstance();
                    Connection conn 
    = DriverManager
                    .getConnection(
                            
    "jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=hibernate",
                            
    "sa""");
                    Statement stmt 
    = conn.createStatement();
                    ResultSet rs 
    = null;
                    
    //getconnection;
                    
    //query
                    
    //rs 
                    if (flag.equals("1")) {
                        rs 
    = stmt
                        .executeQuery(
    "select  cityid,city from city  where  father='"
                        
    + value + "' order by cityid");
                        
    while (rs.next()) {
                    values.append(rs.getString(
    1+ "," + rs.getString(2)
                            
    + ";");
                        }

                        String ff 
    = values.substring(0, values.indexOf(","));//最得敢小的市编号
                        System.out.println(ff);
                        rs 
    = stmt
                        .executeQuery(
    "select areaid,area from area where father='"
                        
    + ff + "'  order by areaid");
                        values.append(
    "||");//区分市和区信息.
                        while (rs.next()) {
                    values.append(rs.getString(
    1+ "," + rs.getString(2)
                            
    + ";");
                        }

                        System.out.println(values.toString());
                    }
     else if (flag.equals("2")) {
                        rs 
    = stmt
                        .executeQuery(
    "select areaid,area from area  where father='"
                        
    + value + "'  order by  areaid");
                        
    while (rs.next()) {
                    values.append(rs.getString(
    1+ "," + rs.getString(2)
                            
    + ";");
                        }

                    }
     else {
                    }

                    out.println(values.toString());
                    out.flush();
                    out.close();
                }
     catch (IOException e) {
                    e.printStackTrace();
                }

            
    %>
        
    </body>
    </HTML>



     

    以上代码利用SQL 2000和利用

    http://www.cnblogs.com/Files/singlepine/area1.rar 中的三个表area,city,province的数据(全国省市区)测试通过.


    发表于 @ 2007年10月23日 11:15:00|评论(loading...)|编辑

    新一篇: 失业后的迷茫 | 旧一篇: 安装环境

    评论

    #AWUSOFT 发表于2007-10-30 00:19:08  IP: 116.25.158.*
    我自己来评论一下....
    #myskyblue 发表于2007-12-24 11:58:21  IP: 221.6.159.*
    大哥你很牛呀...呵呵...
    #hcy1985 发表于2008-05-09 10:57:36  IP: 60.21.102.*
    华新你写的这些不错呀,有用,很有想法,我顶你呵呵!
    #AWUSOFT 发表于2008-05-12 14:13:03  IP: 219.133.184.*
    随便写写
    #yzg000123 发表于2008-05-30 12:21:50  IP: 221.217.52.*
    偶像,我也顶你,写的真好,小弟有你一半就好了~!
    #yami251139 发表于2008-07-04 09:07:14  IP: 218.79.153.*
    你失业了???
    。。。
    (*……(#@……(……@&%!*%
    #AWUSOFT 发表于2008-07-04 22:40:11  IP: 219.133.187.*
    那是以前写的
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 苏华新