请教 asp页面内分页问题 前后翻页都OK 输入数字跳转就报错...

linick 2009-02-04 02:09:47
<%
dim count,d,page,n,sql,rs,yushu,totalpage,k,i
dim ad
response.expires=0 //计算当前页面需要显示多少条内容
count=5
d=int(request.QueryString("ad"))
if d="" then
page=1
n=1
else
page=d
n=count*(d-1)
end if
%>
<%set rs=server.createobject("adodb.recordset") //用记录集连接数据库取数据
sql="select email,idate,fs from email order by id desc"
rs.open sql,conn,1,1
%>
<%
yushu=rs.recordcount mod count //计算余数
if yushu=0 then
totalpage=(rs.recordcount)/count
else
totalpage=int((rs.recordcount)/count)+1 //计算总页数
end if
k=0
if d > totalpage then //计算以绘制数据表,绘表内容我删除了方便看程序
d=totalpage
page=d
n=count*(d-1)
end if
if d<>"" then
for i=1 to n
rs.movenext
next
end if
do while not rs.eof
k=k+1%>
<%if k=count then
exit do
end if
rs.movenext
loop
rs.close:set rs=nothing
call closeDB()%>
<form method="POST" action="?ad" name="form2"> //这里开始进行分页链接
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center">
<% if page>1 then %>
<a href='cak.asp?ad=<%=(page-1)%>'><<上一页</a>  
<%end if%>
<% if int(page) < int(totalpage) then %>
<a href='cak.asp?ad=<%=(page+1)%>'>下一页>></a>
<% end if %>
【共<font color=red><%=totalpage%></font>页 第<font color=red><%=page%></font>页】
</td>
<td align="center">请输入页数:
<input type="text" name="id" size="2" style="border-style: solid; border-width: 1"> 
<input type="submit" value="跳转" name="B1" onClick="javascript:window.location.href='cak.asp?ad='+document.form2.id.value"></td>
</tr>
</table>
</form>

如题: 报错是类型不匹配: '[string: ""]' 指向行为第6行 d=int(request.QueryString("ad"))
除此之外onClick="javascript:window.location.href='cak.asp?ad='+document.form2.id.value" 可能也有错误...
刚开始跟着教材学asp.但教材一直有错.之前一直努力纠错勉强过来了.这次花了6个小时还是调试不成功.实在无能为力.我就自身理解进行了标注.求各位大大帮助!
...全文
120 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
linick 2009-02-04
  • 打赏
  • 举报
回复
恩 我尝试了还是没用 int去掉后前后翻页也错误了 应该是把d=request.QueryString("ad")作为字符型了
然后尝试了判断d是否为空用null或者empty代替"" 结果还是不行
linick 2009-02-04
  • 打赏
  • 举报
回复
非常感谢~~~ 把各种方法组合了数次后...总算调试成功...理论上硬说应该还是有错的...不过只要浏览器能放过就万事OK~
最后成功的是

d=int(request.QueryString("ad"))
if d="" then
page=1
n=1
else
page=d
n=count*(d-1)
end if
 这段不变(本来是这样可以成功前后翻页)
然后submit按钮的type改成"button" 果然是form的action引发跳转失效
cstr取值应该更为准确...怀疑是否是把字符转数值 字符0和数值0不同原因...
应该只要减去一个固定值就可以 用这个时候从来不报类型不匹配的错误 只是卡在最后一页不跳转
最后javascript:window.location.href的数种方式都可以顺利取到id值
总之非常感谢wggipkhgef大大的详细指导~
sk811229 2009-02-04
  • 打赏
  • 举报
回复
你把强制类型转换给去掉试试看,vbscript只有一种数据类型。如果输入的是数字,你加引号他就会按照字符进行操作,如果你把他写在数学算式中他会被自动当成数字。
wggipkhgef 2009-02-04
  • 打赏
  • 举报
回复
你把submit的按钮改为type="button",否则action部分就作如下更改:
<form method="POST" action="" name="form2" onsubmit="javascript:window.location.href='cak.asp?ad='+this.id.value;">
linick 2009-02-04
  • 打赏
  • 举报
回复
cstr取值刚才照你说的改了 不行 似乎取的数值不是原值 D数值很大 导致一直在最后一页
linick 2009-02-04
  • 打赏
  • 举报
回复
d的值正确的 可以response.write显示 初始为0 之后=page
getElementById('id')这个我用过 之前自定义了个jump()函数调用 但是还是不跳转
问题似乎出在<form method="POST" action="?ad" name="form2"> 里的action 只要我onclick了提交表单他好象自动刷新页面而且不传递ad
wggipkhgef 2009-02-04
  • 打赏
  • 举报
回复
d=int(request.QueryString("ad")) 
if d="" then
page=1
n=1
else
page=d
n=count*(d-1)
end if


这一段作如下改:

d=cstr(trim(request("ad")))
if isnull(d) or d="" then
page=1
n=1
else
if not isnumeric(d) then
page=1
n=1
else
page=clng(d)
n=count*(page-1)
end if
end if
wggipkhgef 2009-02-04
  • 打赏
  • 举报
回复
你先response.write d看看,看是否能得到值?
<input type="text" name="id" id="id" size="2" style="border: #ccc solid 1px;" /> 
<input type="button" value="跳转" name="B1" onClick="javascript:window.location.href='cak.asp?ad='+document.getElementById('id').value;" />

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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