昨天看到朋友抢购小米手机时,疯狂的点击抢购按钮,我忽然想这样高频率的点击按钮,这个按钮的后台事件到底是怎么执行的,于是乎我写了个简单的例子,如下:
<div>
<asp:Button ID="Button1" runat="server" Text="抢购"onclick="Button1_Click" />
</div>
protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(1000);
ScriptManager.RegisterClientScriptBlock(this.Page,GetType(),"","alert('【测试测试】')",true);
}
测试出来的结果令我有点意外,【测试测试】的对话框没有弹出来。
再一想,高频率的点击按钮,可能是出现了重复提交的问题。于是将前台代码修改如下:
<script type="text/javascript">
function submitTest(btn) {
btn.onclick = onDealing;
}
function onDealing() {
return false;
}
</script>
<div>
<asp:Button ID="Button1" runat="server" Text="抢购"onclick="Button1_Click"
OnClientClick="submitTest(this);"/>
</div>
测试出来的结果,后台正常执行,没有出现重复提交的问题了。
<div>
<asp:Button ID="Button1" runat="server" Text="抢购"onclick="Button1_Click" />
</div>
protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(1000);
ScriptManager.RegisterClientScriptBlock(this.Page,GetType(),"","alert('【测试测试】')",true);
}
测试出来的结果令我有点意外,【测试测试】的对话框没有弹出来。
再一想,高频率的点击按钮,可能是出现了重复提交的问题。于是将前台代码修改如下:
<script type="text/javascript">
function submitTest(btn) {
btn.onclick = onDealing;
}
function onDealing() {
return false;
}
</script>
<div>
<asp:Button ID="Button1" runat="server" Text="抢购"onclick="Button1_Click"
OnClientClick="submitTest(this);"/>
</div>
测试出来的结果,后台正常执行,没有出现重复提交的问题了。