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 的最后一个声明,您已经在 <head>
标记内声明了它。能不能先把最后一个实例去掉再试试,另外一个可以直接改成:
<script type="text/javascript" src="~/scripts/jquery.js">
只是看看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>
它工作的原因<%= %>
使Response.Write
而<% %>
是对ResolveUrl
的调用而不输出它。在https://support.microsoft.com/en-us/kb/976112 上查看更多信息,希望对您有所帮助!
【讨论】:
以上是关于Bootstrap - 未定义 jQuery的主要内容,如果未能解决你的问题,请参考以下文章
bootstrap-datepicker 抛出未定义的 jQuery