日期:2014-05-16  浏览次数:20977 次

asp action问题
本帖最后由 u010191354 于 2013-07-30 16:57:58 编辑
功能要求:按提交按钮。可以随机从数据库中抽选5个人的名字。
情况:现在做出了随机抽选功能。但是按提交或者刷新网页。名单都会刷新。
修改要求:刚进入网页时,名单栏不要显示任何名字,点击“提交”按钮才显示随机抽选结果。如果刷新网页,内容不变。
个人思路是不是要用到FORM ACTION  但是这个我不大懂,所以来请求高人指点。
代码如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% dim conn,rs
   set conn = Server.CreateObject("ADODB.connection")
   set rs = Server.CreateObject("Adodb.Recordset")
   conn.connectionstring="Provider=Microsoft.Jet.oledb.4.0;Data Source="+server.MapPath("abc.mdb")+";"
   conn.open
   Randomize
   sql="select top 5 * from stu order by rnd(-(id +" & rnd() & "))" 
   rs.open sql,conn,1,3
  
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>

<TABLE width="60%" border="0" align="center" cellpadding="2" cellspacing="1">
<TR>
  <TD width="92%" valign="top"><p>名单:
  <%
for i=1 to 5
if not rs.eof then
  %>
  <%=rs("stuname")+"&nbsp;&nbsp;&nbsp;&nbsp;"%>
  <%
end if
rs.movenext
next
rs.close
set rs=nothing
  %>
  </p>
    <p>&nbsp;</p></TD>

</TR>
<TR>
  <TD colspan="2" align=right>
    <INPUT type="button" onclick="window.location.reload()" value="提交">&nbsp;&nbsp;&nbsp;&nbsp;
 </TD>
  </TR>
</TABLE>

</body>
</html>

------解决方案--------------------
不要用window.location.reload()

可以用一个form表单把input括起来,然后action留空就可以了,会提交到本页面

input的type改为submit,并给一个name叫sub

然后在上面的ASP代码中加入判断
if (Request.Form["sub"] != null)
...执行代码

提交完之后按F5会弹窗询问是否要重复提交表单,如果不想要这个弹窗,那就要换种方式实现,比如提交到别的页面或者AJAX操作。
------解决方案--------------------
是的,这是所有form表单提交都会遇到的。
这是浏览器特性,你如果想规避的话,可以用AJAX实现点击按钮加载数据,这是最直接的办法了。
------解决方案--------------------
引用:
Quote: 引用:

是的,这是所有form表单提交都会遇到的。
这是浏览器特性,你如果想规避的话,可以用AJAX实现点击按钮加载数据,这是最直接的办法了。

现在是希望刷新页面 名单内容不要有变动。怎么改呢  我点了图中的重试,名单内容就刷新了。

这个需求form提交来做是比较麻烦的,建议你用AJAX。
“可以用AJAX实现点击按钮加载数据,这是最直接的办法了。”
------解决方案--------------------