在 ASP 页面中使用带有 Jquery 的 JS 函数

Posted

技术标签:

【中文标题】在 ASP 页面中使用带有 Jquery 的 JS 函数【英文标题】:Using JS functions with Jquery in ASP Pages 【发布时间】:2021-08-23 00:20:03 【问题描述】:

我正在尝试运行一个 JS 函数,该函数使用 JQuery 将信息附加到 ASP 页面的 html 中,但我无法让它工作。我已经对此进行了一些研究,但也许它要简单得多。

    %@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Pruebas.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script type="text/javascript">
        const add = (param) => 
            alert("hi");
            $("div.auto-style1").append("<p>'" + param + "'</p>");
        

    </script>
    <form id="form1" runat="server">
        <div>
        </div>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" style="height: 26px" Text="Button" />

        <asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
        </asp:DropDownList>

        <div class="container">
            some text
        </div>
    </form>
</body>
</html>

more specifically this is the function im trying to run

    <script type="text/javascript">
        const add = (param) => 
            alert("hi");
            $("div.auto-style1").append("<p>'" + param + "'</p>");
        

    </script>
im trying to call this function from the C# code behind the page like this 

    protected void Button1_Click(object sender, EventArgs e)
        
            
                String p = "this is a message";
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "myfunction", "add('" + p + "');", true);
            
        

如果我尝试运行在页面上生成控制台日志或警报的 JS 函数,它可以正常工作。可能和 ASP 按钮中的Postback 属性有关?

如果有人能对此有所了解,我将不胜感激。

【问题讨论】:

您的问题中没有 auto-style1 类的元素。另外,请确保在页面上呈现元素之前没有调用add(),或者将其包装在$(document).ready() 函数中 是的,我已经更正了这一点并尝试了 $(document).ready() 包装,但仍然无法正常工作,还有其他想法吗? 你可以用这个做一个 MRE,这将有助于得到答案 如果您已经更正并放入 doc.ready,请在您的问题中显示,以便我们将其排除。 add 函数何时被调用?单击按钮或页面加载?它是从哪里调用的? minimal, complete, and verifiable example. 【参考方案1】:

您的代码中没有任何 .auto-style1 类。请在 div 中添加一个类来运行此代码。

<form id="form1" runat="server">
        <div class="auto-style1">
        </div>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" style="height: 26px" Text="Button" />

        <asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
        </asp:DropDownList>

        <div class="container">
            some text
        </div>
    </form>

【讨论】:

以上是关于在 ASP 页面中使用带有 Jquery 的 JS 函数的主要内容,如果未能解决你的问题,请参考以下文章

带有 ASP.NET 的 Jquery - 我的页面方法不返回所有记录

用 JQuery 替换 ASP.NET 中的 aspx 页面中引用的 MicrosoftAjax.js

ASP.NET WebAPI和带有大型数据集的jQuery(json)

ASP.NET MVC 在 jQuery 数据表中使用带有按钮 onclick 的模态弹出窗口

带有 ASP.NET 问题的 Jquery 自动完成

带有 jquery 代码的脚本块应该放在 ASP.NET MVC 母版页的啥位置?