0x800a1391 - JavaScript运行时错误:'jQuery'是未定义的
本文关键字:未定义 jQuery 0x800a1391 JavaScript 运行时错误 | 更新日期: 2023-09-27 18:08:33
我有一个asp.net MVC4 Web应用程序。在它我有我通常的html的_Layout。cshtml,它依次加载默认的Home/Index。一切正常
在我的索引中,我也加载了一个局部视图。这也很好。没有问题。
我正在使用以下站点的UI工具:
http://www.keenthemes.com/preview/index.php?theme=metronic问题是它似乎主要是HTML4,而不是为MVC开箱即用的设计,所以我不得不稍微调整一下,让它的工作方式我想要的。(除了非常基本的东西之外什么都没有)。例如,将一部分移到索引中,并使用Renderbody()来加载它,这样实际的html结构就不会改变。我已经这样做了一百万次,以确保我没有遗漏任何结束标签或任何其他可能导致我的问题的东西。
到目前为止,没有任何问题。我继续创建第二个视图和它的部分提取网站的其他部分。像往常一样,先迈出第一步。在提取任何其他代码之前,我只是在第一页中使用了一个小的"Hello World",并在部分中使用了一个类似的字符串,以确保它能够正常工作。。
现在当我输入url Home/ActionName时,整个东西重新加载,但看起来很糟糕。我得到这个错误信息:
0x800a1391 - JavaScript运行时错误:'jQuery'是未定义的
下面是我的代码,它清楚地定义了它:<!-- BEGIN CORE PLUGINS -->
<script src="assets/plugins/jquery-1.8.3.min.js" type="text/javascript"></script>
<script>
jQuery(document).ready(function ()
{
App.init(); // initlayout and core plugins
_Layout.init();
_Layout.initJQVMAP(); // init index page's custom scripts
_Layout.initCalendar(); // init index page's custom scripts
_Layout.initCharts(); // init index page's custom scripts
_Layout.initChat();
_Layout.initDashboardDaterange(); //Red date range
_Layout.initIntro(); //Pop up messages
});
</script>
它指向jQuery(文档)。当我看到消息时,我准备好了。
同样,当我正常加载页面时,它工作得很好。当我自己输入Home时,它工作得很好。只有当我输入Home/AnythingElse时,它才会给出这个错误信息。即使我输入Home/,它应该在索引文件中加载,它也会给我这个错误消息。 jQuery已经定义好了,为什么会在回发时发生这种情况呢?尝试将jQuery的src设置为站点根的绝对值:
<script src="/assets/plugins/jquery-1.8.3.min.js" type="text/javascript"></script>
注意assets
之前的/
-当你的src路径不以/
开始时,浏览器将尝试加载相对于当前路径的资产,所以在你的例子中,当你添加尾斜杠到Home
时,它将尝试从Home/assets/plugins/...
加载jQuery
对我来说,MVC 捆绑器引起了问题(在我的例子中是ui捆绑器)
这是适合我的订单。 <script src="/Scripts/modernizr-2.5.3.js"></script>
<script src="/Scripts/jquery-1.7.1.js"></script>
<script src="/bundles/jquery-ui"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
您需要在validate.js之前像这样添加jquery-x.xx.x.js
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>