回发后运行 javascript 函数

IT技术 javascript asp.net ajax
2021-02-19 06:18:01

我如何在更新面板内回发后运行 javascript 事件

5个回答

您可以使用endRequest的事件PageRequestManager

<form id="form1" runat="server">
<div>
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>   
            <asp:Button runat="server" Text="Button" />
        </ContentTemplate>
    </asp:UpdatePanel>
</div>
</form>
<script type="text/javascript">
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(function (s, e) {
        alert('Postback!');
    });
</script>
@Mych 当您将 prm 放在“asp:ScriptManager”之前时,会发生“Sys is undefined”错误。为了使其工作,prm 变量声明和 add_endRequest 的 javascript 代码必须在脚本管理器之后。此外,VB.net 用户可能想提醒自己,“Sys.WebForms...”是区分大小写的,这与它类似的代码隐藏不同。
2021-04-21 06:18:01
我已经尝试了上述方法,但收到一个脚本错误,说 Sys 未定义......有什么想法吗?
2021-04-26 06:18:01
这很有效,但会阻止进一步的回发。任何解决方案?
2021-05-12 06:18:01

您可以使用 ClientScriptManager 在重新加载时调用函数:

ClientScriptManager.RegisterStartupScript(this.GetType(), "AKey", "MyFunction();", true);

http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx

@Profeten - 这不是你要求的吗?
2021-04-27 06:18:01
我这样做 $("#divGetListforUser .btn").click(function() { isClicked = true; }); 并在回发后将其设置为 false
2021-04-28 06:18:01
我曾经ClientScript.RegisterOnSubmitStatement()!IsPostBackif 块中重新加载验证码,它就像一个魅力,解决了我的问题,因为验证码是用户控件等
2021-05-07 06:18:01

简单地

<script type="text/javascript"> 
    function pageLoad() { 

  } 
</script>

<asp:ScriptManager runat="server" />

<asp:UpdatePanel runat="server"> 
  <ContentTemplate> 
    <asp:Button runat="server" ID="Button1" /> 
    <asp:Literal runat="server" ID="TextBox1" /> 
 </ContentTemplate> 
</asp:UpdatePanel>

然后每次触发 Button1 时都会继续调用 pageLoad()

阅读戴夫·沃德 (Dave Ward) 的这篇文章

试试这个:

$.ajax({
beforeSend: function(){
// Handle the beforeSend event
},
complete: function(){
// Handle the complete event
}
// ......
});
谢谢,这对我帮助很大。它很干净,不需要后端的东西。
2021-04-25 06:18:01
最好的!你可以在之前添加一个 _dopostback 并在之后执行一些东西,太棒了!
2021-05-04 06:18:01

为了在 UpdatePanel 中使用,我将使用ScriptManager.RegisterStartupScript