0

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

2 回答 2

0

确保您在母版页中引用了 jquery。从CDN中包含它,如下所示

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

或从本地应用程序文件夹中引用 jquery 文件。

于 2014-07-01T21:54:48.710 回答
0

有两个问题。第一个结果是我在最初的帖子中提到的代码:

        <script language='javascript' type='text/javascript'  src="~/includes/js/meiomask.js" charset="utf-8">      
    // meioMask options 
    (function($) {
        // call setMask function on the document.ready event
        $(
        function() {
            $('input:text').setMask();
        }
    ); })(jQuery);

    $.ajaxSetup({ cache: false }); 
    </script>

...被复制了。它出现在 Budget.Master.aspx 和 SearchPosition.aspx 中。我在 SearchPosition 中注释掉了那个。第二个问题是 ResolveURL 不起作用。按照建议,我将“src=”添加到包含函数调用的脚本标记中。jQuery 运行没有错误。我仍然不知道为什么 ResolveUrl 不起作用。

再次感谢您抽出宝贵时间。

于 2014-07-02T20:15:35.660 回答