|
登录后查才能浏览下载更多咨询,有问题联系QQ:3283999
您需要 登录 才可以下载或查看,没有账号?入住遨海湾
×
提交后禁用提交按钮(大部分人都是这样做的)( M2 V" _2 h+ h" u# L$ a8 G% R
1 h% d, l. _! p
如果客户提交后,按F5刷新怎么办?1 X$ g1 `, o9 P! ?2 P6 b, D" p; S
" m# ~2 b2 r( T+ ~1 ?8 L8 a3 @使用Session! ~4 Q4 e/ D p
/ u; P& Q5 ]' L% Q* w- o/ T
在提交的页面也就是数据库处理之前:: j' C6 B+ [& t- C8 @: x( X
0 Y* C$ X) l" r0 t Hif session("ok")=true then+ L0 c3 I$ `* l; D4 x
response.write "错误,正在提交"
. p, k* @8 i$ r, m$ t response.end" j; d) N( R- V0 Y
end if
$ x+ t& P- Z) \+ F& T/ J) f. s9 g4 h* v
数据处理完后,修改session("ok")=false。
$ K% ?8 } {% Y
4 Q1 k- R4 n7 C. |* c2 L数据处理成功马上Redirect到另外一个页面. x. s8 u2 E0 y" E" _5 }
4 ]1 |& H$ s/ H操作后刷新的确是个问题,你可以使用跳转页面、关闭本页面,如果是有参数据条件来控制的,那就应该好做了,可以直接修改window.location的值,把参数全部改掉,这样就差不多了。 ; }6 p0 _7 q4 x; l
7 |7 m& K m! D3 u$ z缺点:简单地运用Response.Redirect将不再有效,因为用户从一个页面转到另一个页面,我们都必须用客户端代码清除location.history。注意,这种方法清除的是最后一个访问历史记录,而不是全部的访问记录。 点击后退按钮,再点击后退按钮,你可以看到这时打开的是本页面之前的页面!(当然,这是在你的客户端启用了JavaScript功能的条件下。) 2 s c5 D* g/ t, @
! B+ C, |% B9 w, s" j
如果客户按后退,怎么办?
8 |' [6 p: `/ C6 ?- X; p' Q ^- L- C3 L8 ]& g, A7 H: w
防止网页后退--禁止缓存' g: X( U" \4 Y7 d7 ^0 o' V3 U
: W3 U6 Z# E0 g0 T
我们在进行数据库添加操作的时候,如果允许后退,而正巧有刷新了页面,就会再次执行添加操作,无疑这不是我们需要的,像一般网上很多禁止缓存的代码,有时并不可靠,这时你只要在操作的页面加上就可以了,在网页的里指定要定向的新页,再点后退,看是不是不会再退到刚才的操作页面了,实际上已经把这个历史给删除了 2 C1 x% R- J- A7 r9 Y/ U! B1 N
- N- ]# m1 l* m1 R& X" DASP:: ~) e' w/ R+ K2 n! g: s
Response.Buffer = True ( p4 t- l/ `3 T! d3 l0 T5 m, p" K6 u
Response.ExpiresAbsolute = Now() - 1
i' `1 v- p6 V# }Response.Expires = 0 : w' z, u' h1 W7 [9 z# y
Response.CacheC* A" |( d0 ]0 w9 |2 H! U/ _
! F" ]8 _: Z( A# T" S8 UASP.NET:
$ R7 h( P6 H# {Response.Buffer=true;$ V9 h$ j ~# l0 n
Response.ExpiresAbsolute=DateTime.Now.AddSeconds(-1);
/ y: Q' P1 n: B% c3 ^% w+ }4 }! `Response.Expires=0; b- n' n3 H; T# J1 a7 p; w$ C$ I
Response.CacheC;& Z6 `( S3 I3 I9 ^' O
: e1 a: a# W }究竟怎样才能"禁用"浏览器的后退按钮?或者“怎样才能防止用户点击后退按钮返回以前浏览过的页面?”
6 Z( ?/ W5 U+ Q* Q. i$ o/ C$ q2 _& h- A( y+ s: N/ l
遗憾的是,我们无法禁用浏览器的后退按钮。
3 ~& d3 W5 t' L( L/ V* H4 U6 H, W! p# M* m# u1 S! j
防止网页后退--新开窗口9 I0 t5 h; {; j$ m. ?; W% f$ X+ R* f
- O2 o7 \; G6 Z: K3 c1 }
用window.open弹出表单页面,点提交后关闭该页;处理提交的ASP页也是用弹出,设定表单的target,点提交时window.open("XXX.asp","_blank"),然后用JS来提交表单,完成后window.close();
2 c9 q& X& \! h S: W简单的说,就是提交表单的时候弹出新窗口,关闭本窗口。对于window.open()打开的窗口怎么后退?能后退到哪里去?
4 G' ~$ }! U9 X8 `" P& ^5 _- u3 }+ d! r( X
又一个新方法,放在ASP页面前面就可以了,其他如JSP也可以仿照一下~~
2 S5 [& U9 i5 Q+ @( i( v4 x# Q! K9 ?1 f; J( |
<%
5 J. ]9 i5 o5 Qdim RefreshIntervalTime6 x* i9 m- w3 A% c+ V+ t8 c
RefreshIntervalTime = 3 '防止刷新的时间秒数,0表示不防止; v; W" c$ U. H W7 R
If Not IsEmpty(Session("visit")) and isnumeric(Session("visit")) and int(RefreshIntervalTime) > 0 Then
+ m' x; Z) Y$ R- w2 k. mif (timer()-int(Session("visit")))*1000 < RefreshIntervalTime * 1000 then. y: ~2 M1 P$ P
Response.write ("<meta http-equiv=""refresh"" c"& RefreshIntervalTime &""" />"): F7 y& l, _6 i6 ], I0 E. k
Response.write ("刷新过快,请稍候")
: |5 M+ {9 Z4 w8 U6 ]8 V Session("visit") = timer()
, @' g2 e2 \2 |; [5 |* p Response.end4 w( _* X# Y/ ^( p; P
end if0 \- x: V [( D& t1 n
End If
: I( Y4 b3 r" s" OSession("visit") = timer()7 M7 \/ U' `( C) P! l7 j
%> |
|