Bootstrap - 未定义 jQuery

Posted

技术标签:

【中文标题】Bootstrap - 未定义 jQuery【英文标题】:Bootstrap - jQuery is not defined 【发布时间】:2016-05-13 04:46:58 【问题描述】:

我已经创建了一个 ASP.NET 应用程序并想用 jQuery 验证表单。

刷新页面时,chrome的控制台显示如下错误:

未捕获的引用错误:$ 未定义

这是我的母版页代码:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server">
    <title></title>

    <link href="Styles/bootstrap.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src='<% ResolveUrl ("~/scripts/jquery-1.11.3.js"); %>'></script>
    <script src="Scripts/validations.js" type="text/javascript"></script>
    <asp:ContentPlaceHolder ID="HeadContent" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form runat="server" class="form-inline" role="form">
        <div class="container">
            <div class="jumbotron">    
                <h1>Statement Generator</h1>
                <p>This application is used to generate PDFs</p>
            </div>
            <div class="row">
                <div class="col-xs-12">
                    <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
                </div>
            </div>
            <div class="clear">
            </div>
        </div>
        <div class="footer">

        </div>
    </form>
    <script type="text/javascript" src='<% ResolveUrl ("~/scripts/jquery-1.11.3.js"); %>'></script>
    <script type="text/javascript" src='<% ResolveUrl ("~/scripts/bootstrap.min.js"); %>'></script>

</body>
</html>

这是我在 validations.js 中的代码:

$(function () 
    alert();
);

我错过了什么吗?

【问题讨论】:

你包含 jquery 两次...尝试从标题中删除它 但是我不应该在使用之前定义jQuery吗? 你需要从底部移除jquery。 为什么包含 jquery 2 次?如果 $ 可用,请在控制台中检查,可能路径不正确。 Jquery 一定不能在那个页面上加载,你为什么不直接链接到它,ResolveUrl 是怎么回事? 【参考方案1】:

您需要删除 jquery 的最后一个声明,您已经在 &lt;head&gt; 标记内声明了它。能不能先把最后一个实例去掉再试试,另外一个可以直接改成:

&lt;script type="text/javascript" src="~/scripts/jquery.js"&gt;

只是看看ResolveUrl() 是否是问题所在。

我认为对于脚本,没有必要使用 ResolveUrl,您应该将 ResolveUrl 用于 UserControls 或图像之类的东西。

这是 msdn:https://msdn.microsoft.com/en-us/library/system.web.ui.control.resolveurl.aspx

【讨论】:

那行得通。但为什么它不适用于ResolveUrl @gene - 查看我的编辑,您可以使用 ResolveUrl 但您需要正确的语法,请参阅 Artyom 的另一个答案。但在这种情况下,您的脚本应该很好地放在自己的文件夹中,例如 ~/scripts/... 我的建议是它会导致更多的混乱而不是它的价值。 我想知道~ 不会让浏览器混淆,对吗?浏览器会解析相对网址吗? @Artyom - 我认为浏览器没有混淆。 @JonH 虽然看起来浏览器会被混淆(另见this)。问题是 Asp.net 在幕后解决它(请参阅this)【参考方案2】:

替换

<script type="text/javascript" src='<% ResolveUrl ("~/scripts/jquery-1.11.3.js"); %>'></script>

<script type="text/javascript" src='<%= ResolveUrl("~/scripts/jquery-1.11.3.js") %>'></script>

它工作的原因&lt;%= %&gt; 使Response.Write&lt;% %&gt; 是对ResolveUrl 的调用而不输出它。在https://support.microsoft.com/en-us/kb/976112 上查看更多信息,希望对您有所帮助!

【讨论】:

以上是关于Bootstrap - 未定义 jQuery的主要内容,如果未能解决你的问题,请参考以下文章

使用 react-bootstrap 时组件未定义

bootstrap-datepicker 抛出未定义的 jQuery

Bootstrap - 未捕获的类型错误:无法读取复选框单击时未定义的属性“单击”

Bootstrap 4自定义文件上传未在标签中显示文件名

未捕获的ReferenceError:noty未定义

将 Bootstrap 导入 Rails 时,nil:NilClass 的未定义方法“环境”