asp.net 2.0/jQuery/AJAX
我在页面上有几个可能启动AJAX请求的控件,但我只想在点击一个特定按钮时触发我的js.我如何检查启动请求的控件,以便我可以相应地触发JS.
编辑:我解决了这个问题,但我仍然想知道我是否可以这样做.
澄清:我无法从onclick事件中调用JS,因为该页面位于UpdatePanel内部,我只希望JS在AJAX请求结束时执行,并且由页面上的一个特定按钮触发.在服务器端,我将myLabel.Text设置为某些文本,然后js检查$(myLabel.CliendID)的innerHTML是否为空并触发js.检查innerHTML是我的解决办法,因为我无法弄清楚如何检查AJAX请求的"发送者".希望现在这更有意义.
edit2:我已经阅读了一些文档,结果你可以检查"发送者"控件.
谢谢.
这就是我在代码中所做的工作,以确定哪个控件初始化了请求.所有的JavaScript代码.
function pageLoad() { if (!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) { Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initializeRequest); } } function endRequestHandler(sender, args) { if (sender._postBackSettings.sourceElement.id == '<%= gvResults.ClientID %>') { //do something because of this... } } function initializeRequest(sender, args) { if (CheckForSessionTimeout()) { args.set_cancel(true); } else { if (sender._postBackSettings.sourceElement.id == '<%= gvResults.ClientID %>') { //do something because of this } } }
编辑
这是检查客户端超时的方法.
var sessionTimeoutDateTime = new Date(); var sessionTimeoutInterval = <%= this.SesstionTimeoutMinutes %>; function CheckForSessionTimeout() { var currentDateTime = new Date() var iMiliSeconds = (currentDateTime - sessionTimeoutDateTime); if (iMiliSeconds >= sessionTimeoutInterval) { ShowSessionTimeout(); return true; } return false; }