-- 7/1/2014 -- 我有一个在 VS 2012 中工作的 VS 网站。无论我使用 IE 还是在 VS 中使用 F5 启动网站,我都会遇到同样的错误:“'jQuery' is undefined” . 下面是调试器从 SearchPosition.aspx 中突出显示的代码,指示异常:
(function($) {
// call setMask function on the document.ready event
$(function() {
$('input:text').setMask();
});
})(jQuery);
项目中还有一个包含 的母版页,SearchPosition.aspx
据我了解,母版页的内容应该由 SearchPosition 继承。
母版页有以下代码:
<script language='javascript' type='text/javascript' src='<%# ResolveUrl("~/includes/js/meiomask.js") %>' charset="utf-8"></script>
我已经看到报告由于 jQuery 版本与 IE 冲突而引发此错误,但是当我使用 IE8、IE11 和 Chrome 时会发生这种情况。假设该错误仅发生在 IE8 及更早版本中。
我不确定如何评估 ResolveUrl,但是在这个项目的“Includes”文件夹中有一个名为 meiomask.js 的文件。
任何帮助是极大的赞赏。谢谢。
-- 2014 年 7 月 2 日 -- 感谢您的建议。
我尝试将推荐的行添加到母版页:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
这导致了一个新错误:
Unhandled exception at line 20, column 8 in http://localhost:52629/Budget/
0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'setMask'
调试器突出显示了这一行:
$('input:text').setMask();
我还尝试按照 SearchPosition.aspx 中的建议将脚本标记更改为:
<!-- <script language='javascript' type='text/javascript' src="~/includes/js/meiomask.js" charset="utf-8"></script> -->
...并引发了原始错误。旧版本的脚本标记重新出现在调试器中标有“SearchPosition.aspx [动态]”或“空白[动态]”的页面上(我尝试了几次此测试,页面名称交替出现)。
我应该提到我在一所大学工作,这个 VS 解决方案是由另一个合作机构捐赠给我们的,该机构的网站已经启动并运行。可能代码在他们的环境中交付给我时有效。
此外,在我第一次遇到此错误后,昨天重新安装 jQuery NuGet 包 v 2.1.1 可能给自己带来了更多麻烦。在我意识到项目中已经包含一组 .js 文件之前我这样做了,我怀疑这些文件是旧版本。在其他包含的 .js 文件中,我看到了 jquery-1.2.6.min.js。
母版页还包含这一行:
<!-- <script language='javascript' type='text/javascript' src='<%# ResolveUrl("~/includes/js/jquery-1.2.6.min.js") %>'></script> -->
再次感谢。
-- 2014 年 7 月 1 日上午 10:25 --
我对 VS 和 .NET 还比较陌生(你能告诉我吗?),但看了之后,我认为问题可能出在母版页的呈现方式上。这是 SearchPosition.aspx 的第 5-22 行,因为它们在错误发生时出现在调试器中。请注意,scr=''。单引号之间不应该有什么吗?
</title><link href="includes/css/LSUStyle.css" rel="stylesheet" type="text/css" />
<script language='javascript' type='text/javascript' src=''></script>
<script language='javascript' type='text/javascript' src='' charset="utf-8"></script>
<script language='javascript' type='text/javascript' src=''></script>
<script language='javascript' type='text/javascript'>
// meioMask options
(function($) {
// call setMask function on the document.ready event
$(
function() {
$('input:text').setMask();
}
); })(jQuery);
$.ajaxSetup({ cache: false });
</script>
...这是代码在渲染之前出现在母版页中的方式:
<head runat="server">
<title>Budget System (<%=GetCurrentInstance() %>)</title>
<link href="~/includes/css/LSUStyle.css" rel="stylesheet" type="text/css" />
<script language='javascript' type='text/javascript' src='<%# ResolveUrl("~/includes/js/jquery-1.2.6.min.js") %>'></script>
<script language='javascript' type='text/javascript' src='<%# ResolveUrl("~/includes/js/meiomask.js") %>' charset="utf-8"></script>
<script language='javascript' type='text/javascript' src='<%# ResolveUrl("~/includes/js/script.js") %>'></script>
<script language='javascript' type='text/javascript'>
// meioMask options
(function($) {
// call setMask function on the document.ready event
$(
function() {
$('input:text').setMask();
}
); })(jQuery);
$.ajaxSetup({ cache: false });
</script>