Javascript 如何停止更新面板当前进程和调用按钮单击事件
在myASP.NET页面中,我的用户可以在发送任何付款之前检查客户余额。余额更新标签位于更新面板内,有时检查客户余额的时间比平时长,因此用户可能只想取消检查并继续下一步 有没有办法停止当前的更新面板事件(当它正在运行且时间过长时)并使用JavaScript调用某个按钮单击事件?您可以使用代码取消更新面板的刷新Javascript 如何停止更新面板当前进程和调用按钮单击事件,javascript,asp.net,Javascript,Asp.net,在myASP.NET页面中,我的用户可以在发送任何付款之前检查客户余额。余额更新标签位于更新面板内,有时检查客户余额的时间比平时长,因此用户可能只想取消检查并继续下一步 有没有办法停止当前的更新面板事件(当它正在运行且时间过长时)并使用JavaScript调用某个按钮单击事件?您可以使用代码取消更新面板的刷新 var divElem = 'AlertDiv'; var messageElem = 'AlertMessage'; Sys.Application.add_load(Applicat
var divElem = 'AlertDiv';
var messageElem = 'AlertMessage';
Sys.Application.add_load(ApplicationLoadHandler)
function ApplicationLoadHandler(sender, args)
{
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(CheckStatus);
}
function CheckStatus(sender, args)
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm.get_isInAsyncPostBack() & args.get_postBackElement().id == 'CancelRefresh') {
prm.abortPostBack();
}
else if (prm.get_isInAsyncPostBack() & args.get_postBackElement().id == 'RefreshButton') {
args.set_cancel(true);
ActivateAlertDiv('visible', 'Still working on previous request.');
}
else if (!prm.get_isInAsyncPostBack() & args.get_postBackElement().id == 'RefreshButton') {
ActivateAlertDiv('visible', 'Retrieving headlines.');
}
}
function ActivateAlertDiv(visString, msg)
{
var adiv = $get(divElem);
var aspan = $get(messageElem);
adiv.style.visibility = visString;
aspan.innerHTML = msg;
}
if(typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
但是,ASP.NET请求的处理将在后台继续进行
如果用户在完成之前无法导航,则可能是ASP.NET会话锁定阻止了第二个请求的启动,直到第一个请求完成。您可以尝试检查第一个请求的代码中的属性,如果false
,则将其中止。如果主线程正忙于处理,则可能需要在单独的线程中检查这一点,但这取决于应用程序的体系结构
一个更简单的建议是尝试禁用会话,或者在页面未使用会话或未写入会话时将其设置为只读(引用自):
如果您的页面没有修改任何会话变量,您可以选择退出大部分锁定
如果您的页面没有读取任何会话变量,您可以为该页面选择完全退出该锁
如果没有任何页面使用会话变量,只需在web.config
我在C#中找到了一个解决方案。此代码放在更新UpdatePanel控件的代码中:
Thread th = new Thread(DoSomething);
th.Start();
if (!th.Join(TimeSpan.FromSeconds(3)))
{
th.Abort();
}
如果UpdatePanel的更新时间超过3秒,那么它只会中止当前线程。这有什么用吗?实际上,我的目标是在UpdatePanel运行时取消其回发,或者如果回发时间过长。这不是链接解释的吗?它会禁用更新面板加载映像,但是页面一直在等待,直到第一个请求完成。这是否回答了您的实际问题“使用JavaScript调用[a]按钮点击事件”?另外,它从AJAX请求返回到浏览器的哪个HTTP响应会导致脚本错误?是的,会!要从JavaScript调用按钮单击事件,您只需使用:
document.getElementById('ctl00_MainContent_btnSubmit')。单击()代码>