大家好,小弟现有如下问题:
我的aspx的页面上有一个LinkButton("Save"),点击Save的时候,页面向Server提交,在Server上会对数据库等操作.现在的问题是,有时候可能是因为网速稍微有点慢(我想的),当用户不小心出现双击或是多击Save,页面就多次向Server提交,Server上就会对数据库等进行多次相同的操作.(然后郁闷ing)
请各位有遇到过的或是懂得解决的回答下面的问题:
1.出现双击或是多击Save,页面就多次向Server提交,这种现象的原因是什么?
2.有什么解决的方法?或是避免的解决方案? 谢谢.
我的aspx的页面上有一个LinkButton("Save"),点击Save的时候,页面向Server提交,在Server上会对数据库等操作.现在的问题是,有时候可能是因为网速稍微有点慢(我想的),当用户不小心出现双击或是多击Save,页面就多次向Server提交,Server上就会对数据库等进行多次相同的操作.(然后郁闷ing)
请各位有遇到过的或是懂得解决的回答下面的问题:
1.出现双击或是多击Save,页面就多次向Server提交,这种现象的原因是什么?
2.有什么解决的方法?或是避免的解决方案? 谢谢.
//代码
}
2:解决方案 可以在做数据库执行前,检查逻辑,比如数据是否已经存在在数据库,避免重复动作
也可以在点按钮时,立刻转向页面,使用户不能重复点击
在点按钮时,立刻转向页面,使用户不能重复点击
这个如何实现,请指教,谢谢
之后我怎么停留在我刚刚的页面啊???
var secs = 10;function buttonDisabled() {
window.document.csvActionForm.btnSend.disabled = true;
for(i = 1 ; i <= secs ; i ++) {
window.setTimeout("update(" + i + ")", i * 1000);
}
}function update(num) {
if(num == secs) {
window.document.csvActionForm.btnSend.disabled = false;
}
}
</script>在你的linkbutton的事件里,调用buttonDisabled即可。这段代码是延迟10秒。
点击后变灰,也就是disabled = true执行完操作后再发一段js脚本
把他变回来
感觉隔一段时间变回来不太好link1.attributes.add("onclick","return test()");function test()
{
window.document.all.link1.disabled = true;
return true;
}//执行操作
......................string scriptString = "window.document.all.link1.disabled = false";
if(!this.IsStartupScriptRegistered("Startup"))
this.RegisterStartupScript("Startup", scriptString);
防止用户刷新再次提交另外,你提交操作的代码里应该有逻辑检查的
http://chjl.cn/Article/Read.aspx?ArticleID=172
http://chjl.cn/Article/Read.aspx?ArticleID=292
当你的save按钮点后先判定sesession("done")是否"",是则执行并session("done")="yes",否则跳出
1.提交后disable按钮一段时间link1.attributes.add("onclick","return test()");function test()
{
window.document.all.link1.disabled = true;
return true;
}//执行操作
......................string scriptString = "window.document.all.link1.disabled = false";
if(!this.IsStartupScriptRegistered("Startup"))
this.RegisterStartupScript("Startup", scriptString);2.在数据库端更新前检查3.重定向到本页面(ASP的方法) Response.Redirect("CureentPage.aspx")4.用Session,把页面提交的所有状态做成Session,每次提交时检查Sesion与当前提交内容是否相同,
如果相同,就不提交(这种方法的缺点是有点占服务器端内存)