2016-02-03 119 views
4

我创建了一个ASP.NET应用程序,并希望使用jQuery验证窗体。Bootstrap - 未定义jQuery

当刷新页面,Chrome的控制台显示以下错误:

Uncaught ReferenceError: $ is not defined

这是我的母版页代码:

<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(); 
}); 

我错过了什么吗?

+0

你正在包括jQuery两次...尝试从头中删除它 –

+0

但我不应该在使用它之前定义jQuery吗? – gene

+0

你需要从底部删除jquery。 – JonH

回答

4

你需要删除最后一个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

+0

这工作。但为什么它不能与'ResolveUrl'一起使用? – gene

+0

@gene - 查看我的编辑,您可以使用ResolveUrl,但需要正确的语法,请参阅Artyom的其他答案。但在这种情况下,你的脚本应该很好地放在自己的文件夹中,像'〜/ scripts/...'我的建议是它比它的价值造成更多的困惑。 – JonH

+0

我不知道'〜'是否会让浏览器感到困惑,是吗?浏览器会解析相对的网址吗? – Artyom

1

更换

<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了解更多信息希望它有所帮助!