以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 请教老师,在移动开发,如何避免重复提交或网页刷新造成的重复提交?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=98532)

--  作者:rambowhuang
--  发布时间:2017/3/31 13:48:00
--  [求助] 请教老师,在移动开发,如何避免重复提交或网页刷新造成的重复提交?
请问老师,之前学习的都是使用所谓 token来比对控制,不知道?在Foxtable的移动开发是否有便捷的控制方法呢?
我在移动开发中的关联表单,明细部分经过编辑或新增,浏览器F5刷新就会一直自动新增,
Case "edit.htm"
        If e.PostValues.Count > 0 Then
            
Functions.Execute("Save",e) \'保存表单数据
        End If
        Functions.Execute("Edit",e) \'生成订单编辑页面


--  作者:有点色
--  发布时间:2017/3/31 14:28:00
--  

 加一个编号字段,如果提交的编号之前已经提交过,就不做处理

 

http://www.foxtable.com/mobilehelp/scr/0127.htm

 


--  作者:rambowhuang
--  发布时间:2017/3/31 15:12:00
--  
谢谢,有点色老师
我暂时在新增明细的 form 加了 .AddHiddenValue("newid",format(now(),"HHnnss")) 
并在 Save函数中加上 Static newid As String \'通过这个Static变量可以访问上一次生成的newid,避免重复
只要有时差,暂时可以避免浏览器F5刷新的重复提交了。


--  作者:有点色
--  发布时间:2017/3/31 15:23:00
--  

 3楼这样做不正确。要用cookie存放才行

 

Dim d As Date = format(now(),"HHnnss")

 .AddHiddenValue("newid", d) 

 

 如果进来提交了,就设置

If e.cookies("newid") = nothing then

    e.Appendcookie("newid", e.values("newid"))

Else

    if e.cookies("newid") = e.values("newid") Then \'你这里可以用差值,比如不允许1秒内的提交

End If