为什么我得到一个“未捕获的ReferenceError:$未定义(匿名函数)”
我有一个CSHTML页面,让这些错误:
Uncaught ReferenceError: $ is not defined TabNotes:2
(anonymous function) TabNotes:2
TabNotes:12Uncaught ReferenceError: ko is not defined TabNotes:12
(anonymous function) TabNotes:12
(anonymous function) TabNotes:23
什么会导致这样的错误?我找不到任何理由。我试着包装的JavaScript函数$(文件)。就绪(函数(){但没有任何工作的代码如下
@model test.Web.Framework.Areas.Administration.Models.TabNotesModel
@using (UI.DocumentReadyScript())
{
if (Model.meta.id.HasValue)
{
UI.jQuery("#tbl" + Model.meta.modelname).flexigrid(Model.Grid);
}
}
<form method="post" action="@Url.Action("TabNotes", new { cmd = "refresh" })" id="@Model.meta.modelname">
<div class="ui-state-highlight ui-corner-all highlight" data-bind="visible: meta.message">
<span class="ui-icon ui-icon-info"></span><strong data-bind="text: meta.message">
</strong>
</div>
@using (UI.BeginBlock("Administation.TabNotes", UI.Label("Notes", "Notes").ToString(), test.Web.Framework.Core.enumIcons.pencil, false, false))
{
<table id="@("tbl" + Model.meta.modelname)">
</table>
}
</form>
<script type="text/javascript">
(function() {
var viewModel=ko.mapping.fromJS(@Html.Raw(UI.JavascriptEncode(Model)));
viewModel.getData=function() { return ko.mapping.toJSON(this ); };
viewModel.setData=function(data){
$('#tbl'+this.meta.modelname()).flexigrid(data.Grid);
ko.mapping.updateFromJS(this,data);
};
$('#@Model.meta.modelname').koform({viewmodel: viewModel , validate : {errorElement:'p' } });
$('#@Model.meta.modelname').koform('applyBindings');
$('#load-partial').click(function() {
$('#partial').load('@Html.Raw(@Url.Action("CreateNote", "Entity", new {modelEntity = @Model.meta.entity, itemId = @Model.meta.id}))');
});
})();
</script>
<div id="partial"></div>
<button type="button" id="load-partial">Create Note</button>
编辑:。 jQuery的会从母版页加载
这意味着jQuery的($
)和基因敲除(ko
)中没有定义,这通常出现在当不是由脚本已被执行时加载库。
确保你加载框架在使用它们之前(也就是说,你的框架相关的脚本标签被插入之前你的页面级脚本)。如果这很好,请在开发人员面板中检查您的网络活动,以确定在下载框架时是否收到错误的请求。这可能是因为你在异步加载框架,这意味着你需要一个异步处理程序来开始执行页面级脚本。
jquery和ko被加载到主页面中,不应该总是在页面的其余部分之前加载? – 2012-01-05 17:24:01
@NiekdeKlein:我不确定C#应用程序的结构(我自己使用LAMP堆栈),但这些是我首先检查的第一个可能性。 – 2012-01-05 17:28:03
你的代码中的哪个地方引用了KO和jQuery?通常会发生此错误是因为您的代码在加载引用之前尝试运行。
我建议使用Fiddler或其他网络活动工具来观察何时加载(或不加载)引用以及从何处引用。
它们在主页面中被引用 – 2012-01-06 19:09:58
我试图将jQuery UI小部件合并到我的网站时出现此错误。我不得不更新正在包含的css文件的正确路径;它有时可能会很挑剔。也必须为jquery做同样的事情。还要注意你的本地主机在哪里,关于你的'src =“/ code/blah_folder”的位置。希望能帮助到你。
您是否记得包含jQuery? – Grexis 2012-01-03 23:55:18