【问题标题】:Run javascript function after Postback回发后运行javascript函数
【发布时间】:2010-11-19 09:53:53
【问题描述】:

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

【问题讨论】:

    标签: javascript asp.net ajax


    【解决方案1】:

    您可以使用PageRequestManagerendRequest 事件。

    <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>
    

    【讨论】:

    • 我已经尝试了上述方法,但得到一个脚本错误,说 Sys 未定义....有什么想法吗?
    • @Mych 将 prm 放在“asp:ScriptManager”之前会出现“Sys 未定义”错误。为了使其工作,prm 变量声明和 add_endRequest 的 javascript 代码必须在脚本管理器之后。此外,VB.net 用户可能想提醒自己,“Sys.WebForms...”与它类似的代码隐藏不同,区分大小写。
    • 这很好用,但会阻止进一步的回发。有什么解决办法吗?
    【解决方案2】:

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

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

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

    【讨论】:

    • @Profeten - 这不是你要求的吗?
    • 我这样做 $("#divGetListforUser .btn").click(function() { isClicked = true; });并在回发后将其设置为 false
    • 我使用ClientScript.RegisterOnSubmitStatement()!IsPostBack if 块中重新加载验证码,它就像一个魅力,解决了我的问题,因为验证码是一个用户控件等
    【解决方案3】:

    简单

    <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>
    

    pageLoad() 会在每次触发 Button1 时继续调用

    Read this by Dave Ward

    【讨论】:

      【解决方案4】:

      试试这个:

      $.ajax({
      beforeSend: function(){
      // Handle the beforeSend event
      },
      complete: function(){
      // Handle the complete event
      }
      // ......
      });
      

      【讨论】:

      • 谢谢,这对我帮助很大。它很干净,不需要后端的东西。
      • 最好!你可以在之前添加一个 _dopostback 并在之后执行一些东西,太棒了!
      【解决方案5】:

      对于在 UpdatePanel 中使用,我将使用 ScriptManager.RegisterStartupScript

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-04
        • 2016-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-19
        相关资源
        最近更新 更多