0x800a1391 - JavaScript运行时错误:'jQuery'未定义

时间:2013-04-11 12:26:12

标签: c# javascript jquery razor asp.net-mvc-4

我有一个ASP .Net MVC4 Web应用程序。在其中我有_Layout.cshtml的常用html,后者又加载默认的Home / Index。一切正常。

在我的索引中,我也加载了局部视图。这也很好。没有问题。

我正在使用以下网站的UI工具:

http://www.keenthemes.com/preview/index.php?theme=metronic

问题是它似乎主要是HTML4而不是为开箱即用的MVC设计的,所以我不得不稍微调整它以使其以我想要的方式工作。 (没有任何超越任何基本的东西)。例如,将一个部分移动到索引并使用Renderbody()加载它,以便实际的html结构永远不会改变。我这样做了一百万次,以确保我没有遗漏任何结束标签或任何其他可能导致我的问题。

到目前为止,根本没有问题。一切都按照应有的方式加载。

我继续创建第二个视图,它的部分提取网站的其他部分。像往常一样,宝贝先迈出一步。在提取任何其他代码之前,我只是在第一页中使用了一个“Hello World”,并在partial中使用了类似的字符串以确保它正常工作。它是。

现在当我输入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(文档).ready部分。

同样,当我正常加载页面时,它工作正常。当我自己键入Home时,它工作正常。它只有当我键入Home / AnythingElse时它才会出现此错误消息。即使我键入Home /应该在Index文件中加载,它也会给我这个错误信息。

定义了jQuery,为什么会在回发时发生这种情况?

感谢任何帮助。

3 个答案:

答案 0 :(得分:9)

尝试将jQuery的src设置为站点根目录的绝对值:

<script src="/assets/plugins/jquery-1.8.3.min.js" type="text/javascript"></script>

请注意/之前的assets - 当您的src路径未以/开头时,浏览器会尝试相对于当前路径加载资源,因此在您的示例中你将尾部斜杠添加到Home它将尝试从Home/assets/plugins/...加载jQuery

答案 1 :(得分:1)

对我来说,MVC 捆绑包导致了问题(在我的情况下是ui bundler)

以下是对我有用的订单。

    <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>

答案 2 :(得分:0)

你需要先在这样的validate.js之前添加jquery-x.xx.x.js

<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>