.net - 在更新面板中提交表单后运行 javascript?

标签 .net javascript jquery updatepanel postback

这让我发疯!我已经在这里阅读了至少 5 个与我的问题密切相关的问题,并且可能仅通过谷歌搜索就阅读了 5 页左右。我就是不明白。

我试图在用户填写“已提交注册”表单然后重定向到另一个页面后出现一个 jqueryui 对话框,但我一生无法让任何 javascript 工作,甚至没有一个警报。

这是我的更新面板:

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="upForm" runat="server" 
    UpdateMode="Conditional" ChildrenAsTriggers="False">
    <ContentTemplate>
               'Rest of form'
         <asp:Button ID="btnSubmit" runat="server" Text="Submit" /> 
              <p>Did register Pass? <%= registrationComplete %></p>
    </ContentTemplate>
</asp:UpdatePanel>

我要执行的 Jquery:(现在它位于标记的头部,autoOpen 设置为 false)

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

    $('#registerComplete').dialog({
        autoOpen: true,
        width: 270,
        resizable: false,
        modal: true,
        draggable: false,
        buttons: {
          "Ok": function() {
          window.location.href = "someUrl";
        }
        }
    });

}
     </script>

最后是我的代码:(注释掉了我尝试过的所有东西)

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSubmit.Click     
      'Dim sbScript As New StringBuilder()'
           registrationComplete = True
            registrationUpdatePanel.Update()

            'sbScript.Append("<script language='JavaScript' type='text/javascript'>" + ControlChars.Lf)'
            'sbScript.Append("<!--" + ControlChars.Lf)'
            'sbScript.Append("window.location.reload()" + ControlChars.Lf)'
            'sbScript.Append("// -->" + ControlChars.Lf)'
            'sbScript.Append("</")'
            'sbScript.Append("script>" + ControlChars.Lf)'

            'ScriptManager.RegisterClientScriptBlock(Me.Page, Me.GetType(), "AutoPostBack", sbScript.ToString(), False)'
            'ClientScript.RegisterStartupScript("AutoPostBackScript", sbScript.ToString())'
                            'Response.Write("<script type='text/javascript'>alert('Test')</script>")'
            'Response.Write("<script>windows.location.reload()</script>")'
End Sub

我试过:

  • 从服务器传递变量到 客户端通过 inline <%= %> 中 head 标签的 javascript block 。

  • 将相同的代码放入脚本中
    updatePanel 内的标记。

  • 尝试使用
    注册客户端脚本 block 和
    注册启动脚本

  • 只是做一个 Response.Write 用 脚本标签写在里面。

  • 尝试了各种推杆组合 中的整个 jquery.dialog 代码 注册启动脚本,或者只是
    试图改变 autoOpen
    属性,或者只是在
    上调用“open”

我什至不能得到一个简单的警报来处理这些中的任何一个,所以我做错了什么,但我只是不知道它是什么。

这是我知道的:

  • Jquery 绑定(bind)正确甚至 在异步回发中,因为 div 作为对话框的容器是 总是看不见的,我看到了一个相似的 在这里发帖说这是造成 一个问题,这里不是这种情况。

  • 使用 page_load 而不是
    document.ready 因为那是应该的 在异步和正常上运行
    回发,所以这不是问题。

  • 更新面板正在更新 正确,因为 <p>Did register Pass? <%= registrationComplete %></p>在我之后更新为真 提交表格。

那么我怎样才能让它工作呢?我想要的只是 -> 单击更新面板内的提交按钮 -> 运行服务器端代码以验证表单并插入数据库 -> 如果一切成功,弹出 jquery(模态)对话框说嘿它有效。

最佳答案

您可以查看 endRequest event :

function pageLoad() {
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, e) {
        // this function will be executed after the update panel finished 
        // the AJAX request, so here you may open your jQuery dialog

        if (e.get_error()) {

        } else {

        }
    });
}

关于.net - 在更新面板中提交表单后运行 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2794850/

相关文章:

.net - 从 TIFF 文件中提取 JPEG

c# - 如何获取具有我的 MEF 插件的每个 DLL 的版本号?

javascript - append 到 IFRAME 中的链接 URL

javascript - 单击 anchor 时显示 flowplayer div

javascript - 黄金布局,动态添加项目时遇到问题

c# - 取消行命令不适用于 GridView

c# - 尝试使用 Action.Method arg 运行 DynamicMethod 时出现 VerificationException

javascript - 在javascript中从内部范围设置外部范围变量

javascript - 将存储在变量中的函数分配为对象字面量中的 getter

javascript - 如何 Hook 页面范围的点击事件?