繁体   English   中英

JavaScript运行时错误:“ $”未定义-ASP.NET WebForms(MasterPage)

[英]JavaScript runtime error: “$” is undefined - ASP.NET WebForms (MasterPage)

我希望有人可以帮助我,因为我无法为我的问题找到可行的解决方案。

我正在使用C#在ASP.NET WebForms中进行编码。 我使用母版页。 在此MasterPage中,我在ScriptManager中定义了我的脚本。

<asp:ScriptManager ID="smScripts" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/Scripts/jquery-2.1.1.min.js" />
        <asp:ScriptReference Path="~/Scripts/bootstrap.min.js" />
        <asp:ScriptReference Path="~/Scripts/printArea.js" />
        <asp:ScriptReference Path="~/Scripts/globalFunctions.js" />
        <asp:ScriptReference Path="~/Scripts/jquery.browser.min.js" />
        <asp:ScriptReference Path="~/Scripts/jquery.reject.js" />
    </Scripts>
</asp:ScriptManager>

现在,如果我在函数内的任何页面(例如Default.aspx)中使用jQuery,它将正常工作:

<script type="text/javascript">
    function Print(options) {
        $("div.PrintArea").printArea(options);
    }
</script>

但是,如果我尝试直接在脚本块中使用它(例如,等到文档准备好之后),它将无法正常工作:

<script type="text/javascript">
    $(document).ready(function () {
        // some code
    });
</script>

我收到错误“ JavaScript运行时错误:“ $”未定义”。 我不知道该如何解决这个问题。

也许有人可以帮我吗? 提前致谢。

只要确保

 <asp:ScriptReference Path="~/Scripts/jquery-2.1.1.min.js" />

在致电之前已写入/加载

$(document).ready(function ()

您的代码“函数Print(options)”工作正常,因为页面准备就绪时未加载jquery库,但过了一段时间后加载了jquery库。 您的Print函数在调用时需要jquery,而不是在页面就绪事件中。

假设我们要在每个页面中添加jquery,因此您需要在母版页中包含脚本的引用。

根据最佳做法,您应该将所有javascript参考和脚本放在<body> html标签的末尾: </body>标签之前。

因此,在您的情况下,您应该在<body>标记的末尾引用所有常见的js文件,然后设置如下所示的部分:

<asp:ContentPlaceHolder id="myJsWhatever" runat="server">

</asp:ContentPlaceHolder>

因此,在从母版页继承的页面中,您在本节中定义了所有JS,并确保首先加载jquery。

如果您不想更改所有内容,只需在html页面的head添加jquery引用。

如果我在ContentPlaceHolder 之前而不是ScriptManager使用简单的脚本标记,则它可以工作:

<head>
    <script src="https://.../jquery-2.1.1.min.js" type="text/javascript"></script>

    <asp:ContentPlaceHolder ID="phHead" runat="server">
    </asp:ContentPlaceHolder>
</head>

为了确保每个内容页面上的路径都是正确的,我直接从服务器上加载了该路径,而不是使用“〜/ scripts / ...”之类的路径。 也许有更好的方法?

暂无
暂无

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

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