初学者,在JSP文件实现表格分页,按下“上一页”“下一页”等按钮之后无法调用go()方法,无法换页,求助!!!

mzzx053003 2014-12-16 09:21:04
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>小舒同学</title>
<script language="javascript">
function go(num){
System.out.println("****************go了****************");
document.getElementById("cp").value = num ;
document.spform.submit() ; // 表单提交
}
</script>
</head>
<body>
<%
request.setCharacterEncoding("GBK"); //解决中文乱码
%>
<%!
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver"; //定义数据库驱动程序
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn"; //定义数据库连接地址
public static final String DBUSER = "root"; //数据库连接用户名
public static final String DBPASS = "mysqladmin"; //数据库连接密码
%>
<%
Connection conn = null; //声明数据库连接对象
PreparedStatement pstmt = null; //声明数据库操作
ResultSet rs = null; //声明数据库结果集
%>
<%
int currentPage = 1 ; // 为当前所在的页,默认在第1页
int allRecorders = 0 ; // 表示全部的记录数
int pageSize = 1 ; // 表示全部的页数(尾页)
%>
<%
try{
String aaa = request.getParameter("cp");
if(aaa==null||"".equals(aaa)) {
System.out.println("**********空的*********");
currentPage = 1;
} else {
currentPage = Integer.parseInt(aaa) ;
}
} catch(Exception e) {
System.out.println("****************错了****************");
}
%>

<% //sql操作会抛出异常,这里用try。。。catch处理
try {
String sql = "SELECT COUNT(empno) FROM emp"; //查询语句
Class.forName(DBDRIVER); //数据库驱动加载
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS); //取得数据库连接
pstmt = conn.prepareStatement(sql); //实例化数据库操作对象
rs = pstmt.executeQuery(); //执行查询
if(rs.next()){ // 取得全部的记录数
allRecorders = rs.getInt(1) ;
}
%>
<center>
<h1>雇员列表<h1>
<hr>
<%
pageSize = allRecorders/8+1 ;
%>
<%
sql = "SELECT empno,ename,job,sal,hiredate FROM EMP LIMIT ?,8" ;
pstmt = conn.prepareStatement(sql) ;
pstmt.setInt(1,(currentPage-1) * 8) ;
rs = pstmt.executeQuery() ;
%>
<form name="spform" action="#" method="post">
<input type="button" value="首页" onclick="go(1)" <%=currentPage==1?"DISABLED":""%>>
<input type="button" value="上一页" onclick="go(<%=currentPage-1%>)" <%=currentPage==1?"DISABLED":""%>>
<input type="button" value="下一页" onclick="go(<%=currentPage+1%>)" <%=currentPage==pageSize?"DISABLED":""%>>
<input type="button" value="尾页" onclick="go(<%=pageSize%>)" <%=currentPage==pageSize?"DISABLED":""%>>
<input type="hidden" name="cp" value="1">
</form>

<table border="1" width="60%">
<tr>
<td>雇员编号</td>
<td>雇员姓名</td>
<td>雇员工作</td>
<td>雇员工资</td>
<td>雇员日期</td>
</tr>
<%
while(rs.next()) {
int empno = rs.getInt(1); //取得编号
String ename = rs.getString(2); //取得姓名
String job = rs.getString(3); //取得工作
float sal = rs.getFloat(4); //取得工资
java.util.Date data = rs.getDate(5); //取得雇佣日期
%>
<tr>
<td><%=empno%></td>
<td><%=ename%></td>
<td><%=job%></td>
<td><%=sal%></td>
<td><%=data%></td>
</tr>
<%
}
%>
</table>
<%
} catch(Exception e) {
e.printStackTrace();
}
finally{
rs.close();
pstmt.close();
conn.close();
}
%>
</body>
</html>
...全文
496 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
荆可可 2015-02-19
  • 打赏
  • 举报
回复
function go(num){ spform.elements['cp'].value =num; spform.submit() ; // 表单提交 } 我把javascript改成这样就没问题了。。。。弄了我一下午。。。
functionsub 2014-12-17
  • 打赏
  • 举报
回复
 function go(num){
    document.getElementById("cp").value = num ;
    //document.spform.submit() ;	// 表单提交,这里改一下吧。
     document.getElementById('spform').submit() ;
}
在form上面加一个id="spform" 其实方法是进来了,只是只有IE下可以根据name直接document.spform
mzzx053003 2014-12-17
  • 打赏
  • 举报
回复
那个用JAVA 语句是我的失误,当时是为了调试代码加进去的。然后换了JS语句。我是用的Google浏览器,登录这个JSP就是运行不到go()方法里面。看了2楼之后用IE去登录,其功能就可以实现。为什么IE可以用,Google不可以用呢?
波儸密 2014-12-17
  • 打赏
  • 举报
回复
<input type="hidden" name="cp" value="1"> 改为 <input type="hidden" id="cp" value="1"> 试试
functionsub 2014-12-17
  • 打赏
  • 举报
回复
哦,IE浏览器的话记得开一下开发者工具(按一下F12)。
functionsub 2014-12-17
  • 打赏
  • 举报
回复
 function go(num){
        System.out.println("****************go了****************");
    document.getElementById("cp").value = num ;
    document.spform.submit() ;	// 表单提交
    }
大哥啊,,这是JS啊,不是JAVA啊,你System.out.prinyln是闹哪样啊。。 改成
console.log('***************go了*******************')
波儸密 2014-12-17
  • 打赏
  • 举报
回复
document.getElementById 有时会抓 name 放过了 id ,据说是 IE 的一个 BUG
mzzx053003 2014-12-17
  • 打赏
  • 举报
回复
<script language="javascript"> function go(num){ alert("*******进入了GO方法*******"); document.getElementById("cp").value = num; //document.spform.submit() ; // 表单提交1 document.getElementById('spform').submit() ;// 表单提交2 } </script> JS代码改成这样,在IE不管语句1,2都可以提交。然后在Google浏览器中,会执行alert("*******进入了GO方法*******");,当进入document.getElementById("cp").value = num;语句时,会出错,在JS控制台提示“Uncaught TypeError: Cannot set property 'value' of null”。
搬砖男子汉 2014-12-17
  • 打赏
  • 举报
回复
System.out.println("****************go了****************"); 这行语句应该不能在js函数里写的,这是Java的代码

87,917

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧