当前位置: 首页 > 学习 > 电脑学习 > 网站开发 > ASP > ASP技巧 > 正文

我的避免数据重复提交的方法,不敢独享,希望对大家有帮助

http://www.zk168.com.cn  招考学习网 2006-4-30 14:13:10
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
  ASP中的数据提交是一个非常重要而且常用的环节,如何避免数据重复提交是个常见的问题,一般数据重复提交有2种方式:一、刷新提交后的页面,会提示重新发送信息,选择重试就会重复提交;二、按back返回再提交;所以很多人都问如何禁止back按钮的问题,这个至少目前是无法真正做到的。

  我的思路是:提交数据的时候做数据合法校验,校验通过后打开一个“隐藏”的窗口(其实是显示在屏幕之外的一个小窗口)来进行提交处理,数据保存成功后刷新父窗口并用alert显示保存状态然后关闭此隐含窗口,这样用户就无法用back返回而且提交后的窗口已关闭,避免重复刷新。

  下面是我的演示,只有2个文件:submitdemo.asp 和 save.asp,非常简单,只要稍微修改就可以应用到你的程序里,希望对大家有帮助。

1.submitdemo.asp 演示数据输入和校验主程序
------------------------------------------

<html>
<head>
<title>new/edit</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JavaScript">
<!--
//打开一个位置在屏幕之外的窗口
function NewHideWindow(mypage,myname)
{
    LeftPosition = parseInt(screen.width)+1;
    TopPosition = parseInt(screen.height)+1;
    settings ='height=100,width=100,top='+TopPosition+',left='+LeftPosition+',scrollbars=0,resizable=0,status=0'
    window.open(mypage,myname,settings)
}
//数据校验函数
function validate(theForm)
{
    if(theForm.text1.value == "")
        {
        alert("请填写text1的数据!");
        theForm.text1.focus();
        return (false);
        }
    if(theForm.text2.value == "")
        {
        alert("请填写text2的数据!");
        theForm.text2.focus();
        return (false);
        }
    return (true);
}
//调用上面两个函数校验输入的数据并打开保存数据窗口
function savewin(theForm)
{
   if(validate(theForm))
   {
      NewHideWindow('about:blank','SaveWindow');
      return true;
   }
   return false;
}
-->
</script>
</head>

<body bgcolor="#FFFFFF">
<!--注意这里的 onsubmit 的函数调用和 target 中的窗口名字要和 savewin 函数中NewHideWindow写的窗口名一致(注意大小写)-->
<form name="form1" action="save.asp"  onsubmit="return savewin(this);" target="SaveWindow">
  text1:
  <input type="text" name="text1"><br>
  text2:
  <input type="text" name="text2">
  <input type="submit" name="Submit" value="提 交">
</form>
</body>
</html>


2.save.asp 保存数据处理
------------------------

<%
Dim intStatus
'**********************************************************
'*  保存数据到数据库,在此最好再进行一次数据的合法校验    *
'*  ...                                                   *
'*  If 保存成功 Then                                      *
'*     intStatus = 1                                      *
'*  Else                                                  *
'*     intStatus = -1                                     *
'*  End If                                                *
'**********************************************************

'成功测试
'intStatus = 1

'失败测试
intStatus = -1
%>
<html>
<head>
<title> </title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script>
<!--
<%
      If intStatus=1 Then
         response.write "window.opener.location.reload();"
         response.write "alert('保存成功!');"
         response.write "window.close();"
      Else
         If intStatus=-1 Then
            response.write "alert('保存失败,请检查输入的数据是否完整有效!');window.close();"
         Else
            response.write "window.close();"
         End If
      End If
%>
//-->
</script>
</head>

<body bgcolor="#FFFFFF">
</body>
</html>
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·10. 结束电话
·9 电话故障
·8. 分机、占线
·7. 打错电话
·6. 长途电话
·5. 转告消息
·4. 留 言
·3. 等候与回电
·2. 没找到人
·1. 打电话 接电话
相关内容:
 
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>