在做动态网页的时候要链接数据库,而JS又是网页中很好的脚本语言,但为什么总是出错,下面的代码执行后只保存了记录集中的第一条信息,就是说只有slideimages[0]、slidetext[0]、slidelinks[0]有内容,而下标为1、2、3、4的都是没有内容的,但我查询到的记录确实是有5条的,不知道是怎么回事,请高手帮帮忙,谢谢了...
<SCRIPT type="text/javascript">
<% 
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("news/xwxt.mdb")set rs=server.createobject("adodb.recordset")
SQLSTR="select top 5 * from xw where newstype='1' order by id DESC" 
rs.open SQLSTR,conn,1,1  %>var slideimages=new Array();
var slidetex=new Array();
var slidelinks=new Array();
<%i=0%>
<%do while not rs.eof%> 
        slideimages[<%=i%>]="<%=rs("imagename")%>"
        slidetext[<%=i%>]="<%=rs("title")%>" 
        slidelinks[<%=i%>]="<%=rs("shijian")%>"
<%i=i+1%>
        <%rs.MoveNext%>
<%Loop%>
<%conn.Close
Set RS = Nothing   '释放记录集
Set conn = Nothing
%>
</SCRIPT>
还有就是听说JS是在客户端运行的,用JS链接数据库不是很安全,还有什么方法能够使得JS操作数据库信息,是不是可以赋值到网页中,再用JS调用,具体是怎么做的,我这方面还是新手,不是很懂,请大家帮帮忙哈...

解决方案 »

  1.   

    在js中用小脚本操作数据库,用ajax吧或是其他的mvc框架
      

  2.   

    ajax,如果你不是很熟悉,可以结合下jquery。jquery毕竟还是容易点点。
      

  3.   

    谢谢各位了哈,果然还是有很多不懂,之前也不知道AJAX这个事物,看来还是要学更多的东西才行...  谢谢大家了...
      

  4.   

    “还有就是听说JS是在客户端运行的,用JS链接数据库不是很安全……”
    JS是可以大大增强UI的功能。你上面的代码处于<%...%> 里的是运行在服务器端的,页面处理完后发送到客户端后是看不到的,不过JS的确不适合操作敏感信息。你可以运行你的页面后看下你前台页面的Html源文件。
    如果语句没有错,那么应该纪录都是出来的了,只是你的JS有语法错误,都掉了分号,汗改下
    <SCRIPT type="text/javascript">
    ……<%do while not rs.eof%>  
      slideimages[<%=i%>]="<%=rs("imagename")%>";
      slidetext[<%=i%>]="<%=rs("title")%>";
      slidelinks[<%=i%>]="<%=rs("shijian")%>";
    <%i=i+1%>……
      

  5.   

    简单一点用javabean连接,不用学什么ajax那些框架public class DB {
    public static Connection getCon(){
    Connection con = null;
    try {
    Class.forName("com.mysql.jdbc.Driver");
    String url="jdbc:mysql://localhost/choice?user=root&password=root";
    con=DriverManager.getConnection(url);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (SQLException e) {
    e.printStackTrace();
    }

    return con;
    }

    public static PreparedStatement prepare(Connection con,String sql){
    PreparedStatement ps = null;
    try {
    ps = con.prepareStatement(sql);
    } catch (SQLException e) {
    e.printStackTrace();
    }

    return ps;

    }

    public static void close(Connection con){
    try {
    if(con != null) {
    con.close();
    con = null;
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }

    public static void close(Statement stmt){
    try {
    if(stmt != null) {
    stmt.close();
    stmt = null;
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    } public static void close(ResultSet rs){
    try {
    if(rs != null) {
    rs.close();
    rs = null;
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }
      

  6.   

    public class DB {
    public static Connection getCon(){
    Connection con = null;
    try {
    Class.forName("com.mysql.jdbc.Driver");
    String url="jdbc:mysql://localhost/choice?user=root&password=root";
    con=DriverManager.getConnection(url);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (SQLException e) {
    e.printStackTrace();
    }

    return con;
    }

    public static PreparedStatement prepare(Connection con,String sql){
    PreparedStatement ps = null;
    try {
    ps = con.prepareStatement(sql);
    } catch (SQLException e) {
    e.printStackTrace();
    }

    return ps;

    }

    public static void close(Connection con){
    try {
    if(con != null) {
    con.close();
    con = null;
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }

    public static void close(Statement stmt){
    try {
    if(stmt != null) {
    stmt.close();
    stmt = null;
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    } public static void close(ResultSet rs){
    try {
    if(rs != null) {
    rs.close();
    rs = null;
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }