程序如下:
<%
Condata con=new Condata();
Connection conn=con.getConnection();
PreparedStatement stmt=null;
ResultSet rs=null;%>
<input name="ad" type="button" onClick="ad2()" value="增加">
<script language="javascript">
function ad2() {
<%
stmt=conn.prepareStatement("SELECT * from skywisdom_usetemp ");
rs = stmt.executeQuery(); 
if(rs.next()){%>alert(<%=rs.getString("usetemp1").trim()%>);<%}%> 
}
</script>目的:通过每次按"增加"按钮获取新的数值
问题:值永远是第一次进入页面的值,不会随按"增加"按钮获取新的数值(数据库中的值在按"增加"前已改变).
不想通过刷新页面的方式获得新值,

解决方案 »

  1.   

    不想通过刷新页面的方式获得新值,可以在网页上添加这样的代码,就不会刷新了        if(session.getAttribute("login")==null) {
    incrementCounter();  
    session.setAttribute("login","ok");
    }
      

  2.   

    建议改用javabean和Ajax方式,或者用变通的方法,取回全部的记录,按一下增加显示一条记录。
      

  3.   

    if(rs.next()){%>alert( <%=rs.getString("usetemp1").trim()%>); <%}%>  有问题
      

  4.   

    incrementCounter(); 何解???
      

  5.   

    我的天哪,你指望你点“增加”按钮,用这两行js代码,去执行java的搜索。。java代码是在后台执行的,当你能看到这个页面的时候,jsp已经被转成html响应到你的浏览器了。。不过浏览器中执行java代码是个不错的方向……
      

  6.   

    你的理解有问题,<%%>里的东西是在后台执行的,而不是浏览器,浏览器只能执行html和js代码,<%%>里的东西是由服务解析转化成html代码发到客户端运行。如果你不会ajax的话且你显示的数据是只读的,你可读把你查的数据一次发到客户端(缓存起来)当你点下一个时,从缓存里读就可以了。<% 
    stmt=conn.prepareStatement("SELECT * from skywisdom_usetemp "); 
    rs = stmt.executeQuery(); 
    StringBuilder sb=new StringBuilder();
    while(rs.next()){
        sb.append(rs.getString("username")).append("_");
    }
    %>

    <script language="javascript"> 
       var allname='<%=sb.toString%>'.split('_');
       var i=0;
       function show(){
           alert(allname[(i++)%(allname.length)]);
       }
    </script> 如果你数据库里有 zhangsan ,lisi,wangwu的话,那么查看你的html的源代码应该是:<script language="javascript"> 
       var allname='zhangsan_lisi_wangwu'.split('_');
       var i=0;
       function show(){
           alert(allname[(i++)%(allname.length)]);
       }
    </script> 不会有红色的代码。
      

  7.   

    你每次单击增加按纽,function ad2()涵数就重新执行一次,那么它每次都只是显示记录集的第一个值。我觉得应该把按纽放循环里面,点击一次显示一个值。
      

  8.   


    ajax;或者提交到后台,然后刷新页面。