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

这真让我抓狂! 我已经阅读了至少5个与我的问题密切相关的问题,并且可能只有5个左右的网页来自谷歌搜索。 我只是不明白。

我试图在用户填写表格“注册提交”然后重定向到另一个页面后出现一个jqueryui对话框,但我不能为我的生活得到任何javascript工作,甚至没有一个警报。

这是我的更新面板:

    'Rest of form'  

Did register Pass?

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

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

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

 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("" + ControlChars.Lf)' 'sbScript.Append("" + ControlChars.Lf)' 'sbScript.Append("" + ControlChars.Lf)' 'ScriptManager.RegisterClientScriptBlock(Me.Page, Me.GetType(), "AutoPostBack", sbScript.ToString(), False)' 'ClientScript.RegisterStartupScript("AutoPostBackScript", sbScript.ToString())' 'Response.Write("alert('Test')")' 'Response.Write("windows.location.reload()")' End Sub 

我试过了:

  • 通过head标记的javascript块中的内联将变量从服务器传递到客户端。

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

  • 试图使用
    RegisterClientScriptBlock和
    的RegisterStartupScript

  • 只需使用写在其中的脚本标记执行Response.Write。

  • 尝试将整个jquery.dialog代码放在registerstartup脚本中的各种组合,或者只是
    试图改变autoOpen
    财产,或只是打电话给“开放”
    它。

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

这就是我所知道的:

  • 即使在异步回发上,Jquery也能正确绑定,因为作为对话框的div容器总是不可见的,我在这里看到一个类似的post,说明这引起了问题,这不是这里的情况。

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

  • 更新面板正在更新,因为

    Did register Pass?

    提交表单后,

    Did register Pass?

    更新为true。

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

要从Codebehind注册,请使用以下格式 :

 ClientScript.RegisterStartupScript(GetType(), "AutoPostBackScript", "alert('hi');", True); 

最后的true告诉它将你的代码包装在标签中,如果你想自己做标签就把它关掉。

您可以签出endRequest事件 :

 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 { } }); }