.net – 在更新面板中提交表单后运行javascript?
作者:互联网
这真让我抓狂!我已经阅读了至少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
我试过了:
>将变量从服务器传递到
客户通过内联<%=%>在里面
头标记的javascript块.
>将相同的代码放在脚本中
updatePanel中的标记.
>试图使用
RegisterClientScriptBlock和
的RegisterStartupScript
>只需使用.做一个Response.Write
脚本标签写在里面.
>尝试了推杆的各种组合
整个jquery.dialog代码
registerstartup脚本,或者只是
试图改变autoOpen
财产,或只是打电话给“开放”
它.
我甚至无法得到一个简单的警报来处理任何这些,所以我做错了但我只是不知道它是什么.
这就是我所知道的:
> Jquery甚至可以正确绑定
关于异步回发,因为div
作为对话框的容器是
总是看不见的,我看到了一个相似的
在这里发帖说明是造成的
一个问题,这不是这里的情况.
>使用page_load而不是
document.ready自那以后
在异步和正常运行
回发,所以这不是问题.
>更新面板正在更新
正确,因为< p>注册了
通过? <%= registrationComplete
%GT;< / p为H.在我之后更新为true
提交表格.
那我怎么能做这个呢?我想要的只是 – >点击更新面板内的提交按钮 – >运行服务器端代码以验证表单并插入到db – >如果一切都成功了,请弹出jquery(模态)对话框,说它有效.
解决方法:
要从Codebehind注册,here’s the format:
ClientScript.RegisterStartupScript(GetType(), "AutoPostBackScript",
"alert('hi');", True);
最后的真实告诉它将你的代码包装在< script>中标签,如果你想自己做标签,请将其关闭.
标签:jquery,javascript,net,postback,updatepanel 来源: https://codeday.me/bug/20190621/1258484.html