JavaScript方法不是从后端调用的
JavaScript method is not calling from backend
在我的页面中,我有一个登录控件:
<asp:Login ID="EMSLogin" runat="server" OnAuthenticate="EMSLogin_Authenticate">
<LayoutTemplate>
<asp:Panel ID="Panel1" runat="server" CssClass="wrapper">
<asp:Panel ID="Panel2" runat="server" CssClass="holder">
<asp:Panel ID="Panel3" runat="server" CssClass="loginBox one_edge_shadow">
<h1>
Login Credentials</h1>
<asp:Panel ID="Panel4" runat="server" CssClass="name topmargin">
<asp:Panel ID="Panel5" runat="server" CssClass="label">
<asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label>
</asp:Panel>
<asp:Panel ID="Panel6" runat="server" CssClass="textBox">
<telerik:RadTextBox ID="UserName" runat="server" Height="16px" Width="165px" Font-Size="14px"
Font-Names="Arial Sans-Serif" ToolTip="Enter your valid login name" />
<asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
ValidationGroup="EMSLogin">*</asp:RequiredFieldValidator>
</asp:Panel>
<br class="clearfix" />
</asp:Panel>
<asp:Panel ID="Panel7" runat="server" CssClass="name topmargin">
<asp:Panel ID="Panel8" runat="server" CssClass="label">
<asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>
</asp:Panel>
<asp:Panel ID="Panel9" runat="server" CssClass="textBox">
<telerik:RadTextBox ID="Password" runat="server" TextMode="Password" Height="16px"
Width="165px" Font-Size="14px" Font-Names="Arial Sans-Serif" ToolTip="Enter your valid password" />
<asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password"
ValidationGroup="EMSLogin">*</asp:RequiredFieldValidator>
</asp:Panel>
<br class="clearfix" />
<telerik:RadButton ID="LoginButton" runat="server" CommandName="Login" Text="Log In"
CssClass="loginButton" Font-Size="14px" Width="100px" ValidationGroup="EMSLogin"
ToolTip="Click to log in" />
</asp:Panel>
</asp:Panel>
</asp:Panel>
</asp:Panel>
</LayoutTemplate>
</asp:Login>
我已将ScriptManager控件添加到页面中。
现在EMSLogin_Authenticate
是:
protected void EMSLogin_Authenticate(object sender, AuthenticateEventArgs e) {
RadTextBox UserName = EMSLogin.FindControl("UserName") as RadTextBox;
RadTextBox Password = EMSLogin.FindControl("Password") as RadTextBox;
if (Membership.ValidateUser(UserName.Text, Password.Text)) {
FormsAuthentication.RedirectFromLoginPage(UserName.Text, false);
} else {
Page.ClientScript.RegisterClientScriptBlock(typeof(ScriptManager), "CallShowDialog", "showDialog();", true);
}
}
JavaScript方法showDialog();
在页面中定义:
<script type="text/javascript">
function showDialog() {
$(".jym").dialog("open");
return false;
}
</script>
但这并不是在呼唤。showDialog()
没有错,因为我已经在锚标记的onclick方法上调用了它;它正在显示对话框。如果我在代码后面写alert()
而不是showDialog()
,那么我可以看到警报消息。
我做错了什么?难道不能用这种方式调用JavaScript吗?
这也不起作用:
System.Web.UI.ScriptManager.RegisterClientScriptBlock(this.Page, typeof(RadButton), Guid.NewGuid().ToString(), "showDialog();", true);
RegisterClientScriptBlock
将代码放在文档之前,因此在调用函数时,还没有jym
类的元素。您可以添加alert($(".jym").length)
来确认,您将看到0。
为什么不从客户端调用函数?
$(document).ready(function() {
showDialog();
});
如果你需要它的服务器端,只需将代码更改为:
if (Membership.ValidateUser(UserName.Text, Password.Text)) {
FormsAuthentication.RedirectFromLoginPage(UserName.Text, false);
} else {
Page.ClientScript.RegisterClientScriptBlock(typeof(ScriptManager), "CallShowDialog", "$(document).ready(function() { showDialog(); });", true);
}
几个问题:
- showDialog是否在页眉中声明
-
这个函数位于正确的脚本标签中吗:
-
尝试改革RegisterClientScriptBlock命令:
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"CallShowDialog","showDialog();");
我认为您不需要重载来添加脚本标记。
如果您使用RadAjaxManager,则必须使用以下内容:
RadAjaxManager.GetCurrent(Page).ResponseScripts.Add("showDialog();");
相关文章:
- 调用后端、多路径变量、Ext Js
- 如何断言后端端点已被调用
- 如何通过内容类型为“image/jpeg”的 AJAX 调用将画布图像从 GUI 保存到后端
- Angular 2:当第一个服务成功时,两个后端服务调用
- 通过AJAX调用将JSON对象发送到Django后端
- 如何处理对后端服务进行相同调用的多个浏览器脚本
- 调用后端时,页面会失去对齐方式,并且需要一些时间来重新对齐控件
- 后端允许来自iOS Android和Javascript的api调用
- 在WordPress后端的TinyMCE模态窗口中调用PHP函数
- 从JavaScript调用后端方法和参数传递
- JavaScript方法不是从后端调用的
- Phonegap没有执行ajax脚本(对后端的REST调用)
- 什么's是用JavaScript调用Node.js后端函数的最有效方法
- 通过ajax调用将参数传递到rails后端
- Javascript Ajax前端调用asp.net c#后端
- AngularJS后端调用和响应
- 使用Google+登录验证调用应用引擎后端
- Web:在进行缓慢的服务器端调用后,我们如何在客户端显示内容
- 从后端调用Angular控制器
- 使用vb.net从代码后端调用Javascript函数