asp.net防重新整理重複提交、防後退www.yingtaowu.cn

iDotNetSpace發表於2009-02-16

1、提交後 禁用提交按鈕(像CSDN這樣)
2、資料處理成功馬上跳轉到另外一個頁面!
 
操作後重新整理的確是個問題,你可以使用跳轉頁面、關閉本頁面,如果是有引數據條件來控制的,那就應該好做了,可以直接修改window.location的值,把值的引數全部改掉,這樣就可以了。我用的方法就是以上的。
 

document.all("save_"+idx).disabled=true;


剛才有位兄弟也這麼問其實很簡單
在提交的頁面也就是資料庫處理之前
if session("jy")=true then
response.write "錯誤,正在提交"
response.end
end if
在資料庫處理完畢後,釋放session("jy")
session("jy")=false
即可!


用SESSION 或者用個麻煩點的方法:

用window.open 彈出表單輸入頁面,點提交後關閉該頁;

處理提交的ASP頁也是用彈出,即先設定表單的target為"submit_form",點提交時window.open("XXX.asp","submit_form"),然後用JS來提交表單,最後就是window.close();

對處理提交的ASP頁,輸入資料到資料庫完成後,彈出對話方塊,“提交成功”什麼的,最後也來個window.close();

因為對於window.open()開啟的視窗,用window.close()來關閉時不會彈出提示框,直接就關閉視窗了,這樣使用者就根本沒有機會做重複提交了。

不知道這樣合不合你的意思
 
 
2、資料處理成功馬上跳轉到另外一個頁面!
這個方法最簡單
 
轉:(原理借用)

首先,我們可以定義一個session變數用來儲存一個表單的提交序列號。這裡我定義為“$userLastAction”。然後在表單里加入一個hidden變數,把值設為$userLastAction+1:
>
最後,在處理提交之前判斷表單是否已被提交過:
if($lastAction>$userLastAction and inputIsValid(...)){
$userLastAction++; // 序列號加1
// 處理表單資料
}
我一直使用這個
你的後臺處理頁面,也就是資料接收頁面,執行完相關的操作後,使用下面的語句:
response.write("
這樣隨便他返回後怎麼重新整理,顯示的始終是“資料提交成功******”的對話方塊
 
 
Top
 
 回覆人:arcow(衝星) ( ) 信譽:100 2004-10-24 17:09:40 得分:0
 
 
?

<!--
function input(ok)
{
var M1=ok.ReplyContent.value;
if (M1==''){
alert('回覆內容不可以為空.');
return false;
}
ok.B1.disabled =true;
ok.B2.disabled =true;
return true;
}
//--&gt





這樣就行了,提交後直接轉到另一頁面
 
 
 
1、讓提交後返回歷史記錄
Response.Write"
2、提交後跳轉到本頁
response.redirect "index.asp"
 
 Response.Write"alert('提交成功!');window.location.href='"&Request.ServerVariables("Http_Referer")&"';"
===========================================

防止網頁後退

我們在進行資料庫新增操作的時候,如果允許後退,而正巧有重新整理了頁面,就會再次執行新增操作,無疑這不是我們需要的,像一般網上很多禁止快取的程式碼,有時並不可靠,這時你只要在操作的頁面加上

就可以了,在網頁的裡指定要定向的新頁,再點後退,看是不是不會再退到剛才的操作頁面了,實際上已經把這個歷史給刪除了
============================
Response.Buffer=true;
    Response.ExpiresAbsolute=DateTime.Now.AddSeconds(-1);
    Response.Expires=0;
    Response.CacheControl="no-cache";
==========

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-553425/,如需轉載,請註明出處,否則將追究法律責任。

相關文章