不明白 .. 你的js是ASP中的服务器端脚本呀,Asp中用的是ADODB,又不是jdbc,有什么好转的

解决方案 »

  1.   

    原程序是这样的,我是想在JSP页面里实现二级连动select,但只有asp的代码,转换的时候正如wxbhlj所说的,asp用的是ADO,JSP用的是JDBC,所以不知道该怎么打开数据库。谁能帮忙啊?利用XMLHTTP实现的二级连动Select
    这是继 "利用XMLHTTP无刷新获取数据" 的另一篇关于XMLHTTP的应用.
    关于XMLHTTP.可以说,是一个很好的接合剂.把客户端和服务端的距离拉近了.
    利用XMLHTTP.我们可以实现很多好的想法.这文章.实现了二级连动Select.
    传统二级连动是把所有的数据都传到有客户端..
    利用XMLHTTP.我们可以实时地返回我们所需要的数据.
    select.htm<script language="JavaScript">
    function GetResult(str)
    {
    /*
     *--------------- GetResult(str) -----------------
     * GetResult(str) 
     * 功能:通过XMLHTTP发送请求,返回结果.
     * 参数:str,字符串,发送条件.
     * 实例:GetResult(document.all.userid.value);
     * author:wanghr100(灰豆宝宝.net)
     * update:2004-5-27 19:02
     *--------------- GetResult(str) -----------------
     */
        var oBao = new ActiveXObject("Microsoft.XMLHTTP");
        oBao.open("POST","Server.asp?sel="+str,false);
        oBao.send();
        //服务器端处理返回的是经过escape编码的字符串.
        //通过XMLHTTP返回数据,开始构建Select.
        BuildSel(unescape(oBao.responseText),document.all.sel2)
    }function BuildSel(str,sel)
    {
    /*
     *--------------- BuildSel(str,sel) -----------------
     * BuildSel(str,sel) 
     * 功能:通过str构建Select.
     * 参数:str,字符串,由服务端返回的.有特定结构"字符串1,字符串2,字符串3"
     * 参数:sel,要构建的Select
     * 实例:BuildSel(unescape(oBao.responseText),document.all.sel2)
     * author:wanghr100(灰豆宝宝.net)
     * update:2004-5-27 19:02
     *--------------- BuildSel(str,sel) -----------------
     */
        //先清空原来的数据.
        sel.options.length=0;
        var arrstr = new Array();
        arrstr = str.split(",");
        //开始构建新的Select.
        for(var i=0;i<arrstr.length;i++)
        {
            sel.options[sel.options.length]=new Option(arrstr[i],arrstr[i])
        }
    }
    </script>
    <select name="sel" onChange="GetResult(this.value)">
    <option value="">请选择
    <option value="福建省">福建省
    <option value="湖北省">湖北省
    <option value="辽宁省">辽宁省
    </select>
    <select name="sel2"></select>server.asp  服务器端处理.<% @Language="JavaScript" %>
    <%
    function OpenDB(sdbname)
    {
    /*
     *--------------- OpenDB(sdbname) -----------------
     * OpenDB(sdbname) 
     * 功能:打开数据库sdbname,返回conn对象.
     * 参数:sdbname,字符串,数据库名称.
     * 实例:var conn = OpenDB("database.mdb");
     * author:wanghr100(灰豆宝宝.net)
     * update:2004-5-12 8:18
     *--------------- OpenDB(sdbname) -----------------
     */
        var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname);
        var conn = Server.CreateObject("ADODB.Connection");
        conn.Open(connstr);
        return conn;
    }
    var oConn = OpenDB("data.mdb");
    var province = Request("sel");
    var arrResult = new Array();
    var sql = "select city from china where province='"+province+"'";
    var rs = Server.CreateObject("ADODB.Recordset");
    rs.Open(sql,oConn,1,1);
    while(!rs.EOF)
    {
        //遍历所有适合的数据放入arrResult数组中.
        arrResult[arrResult.length] = rs("city").Value;
        rs.MoveNext();
    }
    //escape解决了XMLHTTP。中文处理的问题.
    //数组组合成字符串.由","字符串连接.
    Response.Write(escape(arrResult.join(",")));
    %>
    数据库设计
    data.mdb
    表china.
    字段
    id  自动编号
    province 文本
    city  文本表:china 数据: 
    id province city
    1 福建省  福州市
    2 福建省  厦门市
    3 福建省  泉州市
    4 湖北省  武汉市
    5 湖北省  荆州市
    6 湖北省  宜昌市
    7 辽宁省  沈阳市
    8 辽宁省  大连市
    9 辽宁省  盘锦市
      

  2.   

    <script language=javascript>//新建数据库连接对象和数据集存取对象var ConnDB = new ActiveXObject("adodb.connection"); var rs = new ActiveXObject("ADODB.Recordset"); //设置数据库连接的DSN
    ConnDB.ConnectionString="DSN=fanli;uidsa;pwd=11111"; ConnDB.open var sql = "select * from TB_user where user_id='1001'" ; //你的SQL语句rs.open(sql,ConnDB,1);if (rs.RecordCount>0){ if (v==parseInt(rs("user_id"))){ //结果回显document.alert(rs("loginname")); //显示某一字段的值var sql=null;rs.closeConnDB.closereturn; }} else { var sql=null; alert("没查到记录!"); txt.select(); txt.focus(); rs.closeConnDB.close} 
    </script>
      

  3.   

    <script language=javascript>//新建数据库连接对象和数据集存取对象var ConnDB = new ActiveXObject("adodb.connection"); var rs = new ActiveXObject("ADODB.Recordset"); //设置数据库连接的DSN
    ConnDB.ConnectionString="DSN=fanli;uid=sa;pwd=11111";  //你得数据库参数,刚才写错了ConnDB.open var sql = "select * from TB_user where user_id='1001'" ; //你的SQL语句rs.open(sql,ConnDB,1);if (rs.RecordCount>0){ if (v==parseInt(rs("user_id"))){ //结果回显document.alert(rs("loginname")); //显示某一字段的值var sql=null;rs.closeConnDB.closereturn; }} else { var sql=null; alert("没查到记录!"); txt.select(); txt.focus(); rs.closeConnDB.close} 
    </script>
      

  4.   

    楼上的兄弟,还是不行,结果总是在第2个select里面显示出script代码,而不是我想显示的数据库里的东西。。
      

  5.   

    另外想问问,是不是js代码的这个页面把后缀换成.jsp,放到weblogic服务器下运行也能正常解释吗?
      

  6.   

    server.asp  服务器端处理.<% @Language="JavaScript" %>
    <%
    function OpenDB(sdbname)
    ........很显然是一个ASP的服务器端代码,你只要把此文件用server.jsp重新写一遍就可以了,也就是从数据库里读数据,然后按一定的格式写回客户端。
    例如:
    <%
    java.sql.Connection Conn;
    java.sql.Statement Stmt;
    java.sql.ResultSet Rst;
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Conn=DriverManager.getConnection("jdbc:odbc:fanli","sa","11111");
    Stmt=Conn.createStatement();String sql = "select city from china where province='"+request.getParameter("sel")+"'";
    Rst= Stmt.executeQuery(sql);
    StringBuffer sbf = new StringBuffer();
    while(Rst.next())
    {
        //遍历所有适合的数据放入arrResult数组中.
        sbf.append(rs.getString("city")+",");
    }
    //escape解决了XMLHTTP。中文处理的问题.
    //数组组合成字符串.由","字符串连接.
    out.print(escape(sbf.toString()));%>
      

  7.   

    out.print(escape(sbf.toString()));这句话能把字符串写回客户端吗?
    刚才试了一下,运行到循环的时候IE死了:(