[英]JavaScript runtime error: “$” is undefined - ASP.NET WebForms (MasterPage)
我希望有人可以帮助我,因为我无法为我的问题找到可行的解决方案。
我正在使用C#在ASP.NET WebForms中进行编码。 我使用母版页。 在此MasterPage中,我在ScriptManager中定义了我的脚本。
<asp:ScriptManager ID="smScripts" runat="server">
<Scripts>
<asp:ScriptReference Path="~/Scripts/jquery-2.1.1.min.js" />
<asp:ScriptReference Path="~/Scripts/bootstrap.min.js" />
<asp:ScriptReference Path="~/Scripts/printArea.js" />
<asp:ScriptReference Path="~/Scripts/globalFunctions.js" />
<asp:ScriptReference Path="~/Scripts/jquery.browser.min.js" />
<asp:ScriptReference Path="~/Scripts/jquery.reject.js" />
</Scripts>
</asp:ScriptManager>
现在,如果我在函数内的任何页面(例如Default.aspx)中使用jQuery,它将正常工作:
<script type="text/javascript">
function Print(options) {
$("div.PrintArea").printArea(options);
}
</script>
但是,如果我尝试直接在脚本块中使用它(例如,等到文档准备好之后),它将无法正常工作:
<script type="text/javascript">
$(document).ready(function () {
// some code
});
</script>
我收到错误“ JavaScript运行时错误:“ $”未定义”。 我不知道该如何解决这个问题。
也许有人可以帮我吗? 提前致谢。
只要确保
<asp:ScriptReference Path="~/Scripts/jquery-2.1.1.min.js" />
在致电之前已写入/加载
$(document).ready(function ()
您的代码“函数Print(options)”工作正常,因为页面准备就绪时未加载jquery库,但过了一段时间后加载了jquery库。 您的Print函数在调用时需要jquery,而不是在页面就绪事件中。
假设我们要在每个页面中添加jquery,因此您需要在母版页中包含脚本的引用。
根据最佳做法,您应该将所有javascript参考和脚本放在<body>
html标签的末尾: </body>
标签之前。
因此,在您的情况下,您应该在<body>
标记的末尾引用所有常见的js文件,然后设置如下所示的部分:
<asp:ContentPlaceHolder id="myJsWhatever" runat="server">
</asp:ContentPlaceHolder>
因此,在从母版页继承的页面中,您在本节中定义了所有JS,并确保首先加载jquery。
如果您不想更改所有内容,只需在html页面的head
添加jquery引用。
如果我在ContentPlaceHolder 之前而不是ScriptManager使用简单的脚本标记,则它可以工作:
<head>
<script src="https://.../jquery-2.1.1.min.js" type="text/javascript"></script>
<asp:ContentPlaceHolder ID="phHead" runat="server">
</asp:ContentPlaceHolder>
</head>
为了确保每个内容页面上的路径都是正确的,我直接从服务器上加载了该路径,而不是使用“〜/ scripts / ...”之类的路径。 也许有更好的方法?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.