所以我想在更新updatepanel后运行一些javaScript函数,所以我有:
function pageLoad() {
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(panelLoaded);
}
function panelLoaded(sender, args) {
alert("foobar");
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,如果我更新面板一次,"foobar"将被提醒一次; 如果我第二次更新面板,"foobar"会弹出两次; 第三次触发面板更新时,"foobar"弹出三次......第四次弹出4次等等......
是什么造成的?
谢谢~~~
我试图在更新面板刷新后运行javascript.我读过几个你可以使用类似代码的地方:
function codeToRun() {
//Code Here
}
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(codeToRun);
Run Code Online (Sandbox Code Playgroud)
但它似乎没有工作......任何想法?我已经尝试将代码放在更新面板的内容区域以及它之外...到目前为止还没有运气.如果您对此可能发生的原因有任何见解,请与我们联系.
谢谢,
马特
javascript asp.net updatepanel scriptmanager pagerequestmanager
asp.net 2.0/jQuery/AJAX
<script type="text/javascript">
//updated to show proper method signature
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(hideMessage);
function hideMessage(sender, args)
{
var ctl = args.get_postBackElement();
//check if ctl is the disired control
//hide user notification message
}
</script>
Run Code Online (Sandbox Code Playgroud)
我在页面上有几个可能启动AJAX请求的控件,但我只想在点击一个特定按钮时触发我的js.我如何检查启动请求的控件,以便我可以相应地触发JS.
编辑:我解决了这个问题,但我仍然想知道我是否可以这样做.
澄清:我无法从onclick事件中调用JS,因为该页面位于UpdatePanel内部,我只希望JS在AJAX请求结束时执行,并且由页面上的一个特定按钮触发.在服务器端,我将myLabel.Text设置为某些文本,然后js检查$(myLabel.CliendID)的innerHTML是否为空并触发js.检查innerHTML是我的解决办法,因为我无法弄清楚如何检查AJAX请求的"发送者".希望现在这更有意义.
edit2:我已经阅读了一些文档,结果你可以检查"发送者"控件.
谢谢.