|
登录后查才能浏览下载更多咨询,有问题联系QQ:3283999
您需要 登录 才可以下载或查看,没有账号?入住遨海湾
×
提交后禁用提交按钮(大部分人都是这样做的)
1 c' A. `0 S8 n
4 s0 T7 t* o. y1 E2 c' R, I如果客户提交后,按F5刷新怎么办?
# H9 G9 r' ]8 b4 a& \' S3 ?
. e( H$ q( x7 a$ e0 G使用Session# D# \8 ~+ K! G" [* `3 M( S
! ] t; _' G `" }7 e
在提交的页面也就是数据库处理之前:
, ~) K0 ~* Z$ ~$ X
/ }7 F2 v; E' Z0 I( hif session("ok")=true then
+ I. e) j; M6 T8 D response.write "错误,正在提交"( f( \( [$ w ^0 y! q% K: k$ R
response.end, |: x% y& o5 V9 a8 [) m
end if/ J2 E& h, e/ s9 k8 G/ C
, i' ~! O0 H( I; {1 C数据处理完后,修改session("ok")=false。
5 y/ r" Q5 ]' B6 {% A7 N3 \) g5 I [6 A
数据处理成功马上Redirect到另外一个页面
8 H j7 ?1 O9 i+ i; |6 v! Y) u! U& Z0 `+ N `* Q0 a) Y2 K1 m' _; t
操作后刷新的确是个问题,你可以使用跳转页面、关闭本页面,如果是有参数据条件来控制的,那就应该好做了,可以直接修改window.location的值,把参数全部改掉,这样就差不多了。 m% E5 u/ T* J- N$ f9 {' M
/ x1 }3 l8 T( l k* W0 ]缺点:简单地运用Response.Redirect将不再有效,因为用户从一个页面转到另一个页面,我们都必须用客户端代码清除location.history。注意,这种方法清除的是最后一个访问历史记录,而不是全部的访问记录。 点击后退按钮,再点击后退按钮,你可以看到这时打开的是本页面之前的页面!(当然,这是在你的客户端启用了JavaScript功能的条件下。) ; k( ?" P' F; K$ M" K
9 c$ v3 i2 [% l6 B如果客户按后退,怎么办?
0 J5 _" F5 ]8 b
3 a$ c; ~+ y% D; x% S& p/ Z Y/ ^防止网页后退--禁止缓存
* r( \3 ~3 K( B% `
* W# ~2 p2 H& J) ^5 m u& ^; B我们在进行数据库添加操作的时候,如果允许后退,而正巧有刷新了页面,就会再次执行添加操作,无疑这不是我们需要的,像一般网上很多禁止缓存的代码,有时并不可靠,这时你只要在操作的页面加上就可以了,在网页的里指定要定向的新页,再点后退,看是不是不会再退到刚才的操作页面了,实际上已经把这个历史给删除了
- v/ G7 f" j. ~7 O$ d, _7 d& U5 j9 v) ~1 F; D* ^5 C) t
ASP:
% j( K/ n- o: i+ mResponse.Buffer = True
+ V! Q6 f7 [7 c |Response.ExpiresAbsolute = Now() - 1
3 I- e* ^0 z; vResponse.Expires = 0 # d7 f1 v+ N6 J6 m
Response.CacheC
! B% }0 l, f, [! K9 d6 y- u
V0 U* `9 P" N% L5 p5 s6 XASP.NET:
, a4 E3 R" d6 u* i7 u& X" _7 QResponse.Buffer=true;
: f% y c: i4 q5 u# v# r% `; h$ q- wResponse.ExpiresAbsolute=DateTime.Now.AddSeconds(-1);
5 Q0 T+ f" A- Q- z4 I6 o3 SResponse.Expires=0;2 w7 L) T! f7 b7 G$ a
Response.CacheC;
9 |* @ \! |6 k
0 R- j4 w" c5 l6 P究竟怎样才能"禁用"浏览器的后退按钮?或者“怎样才能防止用户点击后退按钮返回以前浏览过的页面?”4 m$ o" u- U0 |5 P: \# V. N _1 G7 j
: r2 } b9 T6 o* q' \遗憾的是,我们无法禁用浏览器的后退按钮。
% Z- D; |4 d) W: J
; w4 R j2 R: f, H7 w防止网页后退--新开窗口3 n x( A4 @, p) @3 s) s, j4 v# H
; r9 k! c: i2 E4 I+ j% x
用window.open弹出表单页面,点提交后关闭该页;处理提交的ASP页也是用弹出,设定表单的target,点提交时window.open("XXX.asp","_blank"),然后用JS来提交表单,完成后window.close();0 \3 B0 c p" G0 w: ~, v# Q
简单的说,就是提交表单的时候弹出新窗口,关闭本窗口。对于window.open()打开的窗口怎么后退?能后退到哪里去?
' x8 X4 Q9 T2 |# D3 U0 m
; G9 t& W$ z8 ]% U: a0 b又一个新方法,放在ASP页面前面就可以了,其他如JSP也可以仿照一下~~
! t X2 x5 I( z) k5 s) K) X
& W9 \2 ~9 g7 n V( |# d( t; z, q: R<%0 L. h. B& R0 {+ p. B) [
dim RefreshIntervalTime* m' d% }- t5 l7 y% k) z
RefreshIntervalTime = 3 '防止刷新的时间秒数,0表示不防止$ H' A: Q( R- `, g. ~
If Not IsEmpty(Session("visit")) and isnumeric(Session("visit")) and int(RefreshIntervalTime) > 0 Then \4 c: V- h6 a: m2 s
if (timer()-int(Session("visit")))*1000 < RefreshIntervalTime * 1000 then, ?' o0 X, \3 [. T' z% ~
Response.write ("<meta http-equiv=""refresh"" c"& RefreshIntervalTime &""" />")7 o" `3 |5 \! M1 N
Response.write ("刷新过快,请稍候")
' b6 Q9 V: W% f4 m' @) z$ E Session("visit") = timer()
- |+ S ~" Q, f9 ^ I0 y3 D8 f! m6 i& ] Response.end" B, ]# J+ G1 O' o
end if* n! K+ U1 B5 c9 h5 N
End If0 S! E7 O: W! U* ~4 ]
Session("visit") = timer()
K q. k2 l7 P+ v3 i1 f%> |
|