繁体   English   中英

根据条件从函数中调用 JavaScript

[英]Call JavaScript from function based on condition

我有一个我构建的 jQuery 模态系统,如果用户输入的用户名或密码无效,我想触发模态弹出窗口。 我需要从 ASP 中的 C# 代码隐藏进行这些检查,然后如果存在无效的用户名或密码,则触发我的 JavaScript 函数: showModal("errorDiv")

这可能吗?

我不想将 JavaScript 绑定到按钮单击,而是以单击按钮时的代码块为条件。

所以基本上

btnSubmit_OnClick(sender, e) {
   if (Username.Exists())
       // Continue on
   else
       call showModal("errorDiv");
}

有什么帮助吗?

看看ScriptManager.RegisterStartupScript方法,它允许您在客户端执行 JavaScript,当您的异步请求在控件上结束时,此方法会将您的 JavaScript 附加到服务器端响应:

ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "showModalScript",
                                    "showModal('errorDiv');", true);

如果您没有使用 MS Ajax UpdatePanels 进行部分页面呈现,并且您的回传是正常的,请查看ClientScriptManager.RegisterClientScriptBlock

ClientScript.RegisterStartupScript(GetType(), "showModalScript",
                                   "showModal('errorDiv');", true);

无法从 Web 服务器“直接”调用 JavaScript 函数。 服务器只能生成由浏览器显示的 HTML 响应。

Web 服务器生成的 HTML 响应可以包含生成的 JavaScript。 因此,我想您可能想要做的是从btnSubmit_OnClick中编写一些 JavaScript,这将在页面加载时触发对话框。

我对 ASP 的机制了解不多,无法在这方面为您提供帮助,但希望这能稍微解决问题。

实现此目的的一种方法是从 C# 向您的页面发出一个 javascript 变量。 然后设置一个 javascript 例程,以便在使用 jQuery 加载页面时运行,检查该变量并调用 showModal("errorDiv")。

我不确定您要在这里完成什么。 在我看来,您正试图从 JavaScript 中调用 ASP 函数。 问题是您的 ASP 在服务器上运行,而 JavaScript 在客户端上运行。

您需要创建一个返回身份验证结果的 ASP 页面。 然后你使用类似这样的东西来评估它:

.get('/urlto/authpage.asp', function(data) { 
    if (data='Authorized') { 
        do something;
    }
    else {
        showModal('errorDiv');
    }

在这种情况下,我假设您的 ASP page在获得授权后仅返回Authorized

.get()使用引号中的 URL 调用远程服务器。 第二个参数是返回结果时调用的函数。 该函数的第一个参数是该 Web 请求的文本。

有关.get()的更多信息:http: //docs.jquery.com/Ajax/jQuery.get#urldatacallbacktype

希望我能正确阅读你的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM