【问题标题】:Call JavaScript from function based on condition根据条件从函数调用 JavaScript
【发布时间】:2009-07-22 00:53:19
【问题描述】:

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

这可能吗?

我不想将 JavaScript 绑定到按钮单击,而是在按钮单击上的代码块条件下。

基本上

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

有什么帮助吗?

【问题讨论】:

    标签: c# asp.net javascript jquery


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      我对 ASP 的机制知之甚少,无法在这方面为您提供帮助,但希望能稍微澄清一下。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 你有什么例子可以告诉我如何做到这一点吗?
        • @CMS 展示了如何发出上面的 javascript 代码。使用 ClientScript 对象。
        【解决方案4】:

        我不完全确定您要在这里完成什么。在我看来,您正试图从 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

        希望我正确阅读了您的问题。

        【讨论】:

          猜你喜欢
          • 2019-04-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-17
          • 2016-06-27
          • 2022-07-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多