0x800a1391 – JavaScript运行时错误:’jQuery’未定义 – MVC 4
我想要一个非常简单的modal dialog运行。 所以按照教程我最终得到这个代码:
BundleConfig:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-1.8.2.min.js")); bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include( "~/Scripts/jquery-ui-1.8.24.js"));
_布局:
@ViewBag.Title - My ASP.NET MVC Application @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/jqueryui") @RenderSection("featured", required: false) @RenderBody() @RenderSection("scripts", required: false)
和指数:
@section featured { @ViewBag.Title.
@ViewBag.Message
$( "#dialog-form" ).dialog({ autoOpen: false, height: 300, width: 350, modal: true, buttons: { Cancel: function() { $( this ).dialog( "close" ); } }, close: function() { allFields.val( "" ).removeClass( "ui-state-error" ); } }); $( "#create-user" ) .button() .click(function() { $( "#dialog-form" ).dialog( "open" ); }); }
但是当我运行它时,我最终得到0x800a1391 – JavaScript运行时错误:’jQuery’未定义,在jquery-ui库中。 如果我只是将代码放在一个html页面中,它会按预期工作。 所以问题来自MVC项目。 我在Windows 8上使用visual studio 2012。有什么想法吗?
默认情况下,MVC绑定程序忽略文件名中带.min
的文件。
使用未缩小版本的jQuery来修复问题(或者只是重命名文件) – 部署后,捆绑器无论如何都会缩小jQuery文件。
更新
您可以通过清除RegisterBundles
方法中的IgnoreList
来更改此行为(但我建议坚持使用默认值并简单地重命名文件):
// Clear all items from the ignore list to allow minified CSS and JavaScript // files in debug mode bundles.IgnoreList.Clear(); // Add back the default ignore list rules sans the ones which affect minified // files and debug mode bundles.IgnoreList.Ignore("*.intellisense.js"); bundles.IgnoreList.Ignore("*-vsdoc.js"); bundles.IgnoreList.Ignore("*.debug.js", OptimizationMode.WhenEnabled);
请参阅Telerik文档中的更多内容 。
遇到此错误时遇到的问题是由于以下语句不在文档的中,而是在文档末尾的
标记之前。
@Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/jqueryui") @Scripts.Render("~/bundles/bootstrap")
一旦我将它们移动到我的.cshtml文件的 ,一切正常。
只需在脚本周围使用@section脚本即可
@section scripts { }
我在这个问题上挣扎了大约一个小时,几乎所有的解决方案都归结为你称之为脚本的顺序和方法。 我发现捆绑包造成了问题 (对我而言,它是ui捆绑器)
这是对我有用的订单。
IE在JavaScript中还有其他语法检查,而不是Edge,Chrome和Firefox。 当我的MVC应用程序中打开BundleOptimization时,我的代码中出现了同样的错误。 我使用AngularJS作为框架,并且一条线搞砸了整个捆绑,并产生了级联效果:
$http.post('/controller/action', { dto })
删除大括号{} – 解决了我’丢失的JQuery问题’。 但我首先通过IE中的调试找到了(在调试模式下按F8): JQuery错误消息具有误导性,但语法错误引用了正确的行,因此我可以修复错误。