22

我正在处理使用本地文件系统设置创建的 ASP.net 项目。我正在使用 MVC 和 Jquery。当我在调试模式下运行应用程序时,Jquery 工作正常,即在 ASP.net 开发服务器中。我正在尝试在 IIS 7 中托管应用程序。在托管模式下,它无法识别 Jquery 并给出脚本错误“Jquery 未定义”。脚本文件的位置在两种模式下都没有改变。任何人都可以知道可能是什么原因以及如何解决这个问题。

我的代码如下所示;

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script src="../../Scripts/MicrosoftAjax.debug.js" type="text/javascript"></script>

<script src="../../Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"></script>

<script src="../../Scripts/jquery-1.2.6.js" type="text/javascript"></script>

<!-- YUI Styles -->
<link href="../../Content/reset.css" rel="stylesheet" type="text/css" />
<link href="../../Content/fonts.css" rel="stylesheet" type="text/css" />
<link href="../../Content/grids.css" rel="stylesheet" type="text/css" />
<!-- /YUI Styles -->
<link href="../../Content/knowledgebase.css" rel="stylesheet" type="text/css" />

<script type="text/javascript">
    //this hides the javascript warning if javascript is enabled
    (function($) {
        $(document).ready(function() {
            $('#jswarning').hide();
        });
    })(jQuery);
</script>

<asp:ContentPlaceHolder ID="ScriptContent" runat="server" />

……

4

19 回答 19

41

0 我不知道你们是否找到了解决问题的方法。我遇到了同样的问题,并且想弄清楚为什么我使用的插件会出现“jQuery is undefined”错误。我尝试了从互联网上获得的所有解决方案,但一点运气都没有。

但是,突然间我的脑海中闪过一些东西,可能是脚本文件应该是有序的。所以,我将 jquery 引用移到了第一个位置,一切都开始像魅力一样工作。

请记住,如果您使用任何带有 jquery 的插件,请确保使用以下设置对这些字段的引用的顺序。

  1. 对 jquery 库的引用
  2. 参考其他后续插件(依赖)库等等……

例如:

  1. "脚本 src="js/jquery-1.3.2.min.js" 类型="文本/javascript"...
  2. "脚本 src="js/jqDnR.min.js" 类型="文本/javascript"...
  3. "脚本 src="js/jquery.jqpopup.min.js" 类型="文本/javascript"...
  4. "脚本 src="js/jquery.bgiframe.min.js" 类型="文本/javascript"...

始终确保您必须首先放置 jquery 引用,然后是后续库。

希望这可以解决您的问题,尤其是在您使用 MasterPages 时。非常奇怪的是,当您不使用 MasterPages 时,无论您使用什么顺序,它都能正常工作,但当您使用时,它会以某种方式要求正确的顺序。

祝你好运,编码愉快,

文森特·德索萨

于 2009-08-31T13:49:44.363 回答
21

尝试使用 Firebug 'Net' 选项卡来查看文件是否已加载。

您还可以将 Firebug 配置为在所有错误上都失败,并查看错误发生的时间与 jQuery 加载的时间。

于 2008-12-04T01:10:34.387 回答
4

使用 FIrebug 后,我发现文件没有找到,因为文件的相对路径不起作用。为了解决这个问题,我们应该使用 Url.Content 方法来重新设置路径。例如:

<script src="<%= Url.Content("~/Scripts/jquery-1.2.6.js")%>" type="text/javascript"></script>
于 2008-12-04T19:16:21.870 回答
4

您也可以尝试让 Google 为您托管 jQuery:

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

这将避免担心脚本的相对路径,避免服务器上的负载,并且对于用户(可能已经在浏览器的缓存中某处)来说会更快。

于 2008-12-04T21:39:34.077 回答
4

我通过页面中的 JavaScript 版本与项目中的版本不匹配而收到消息。

On the page: <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>

Actual version in the project: jquery-1.4.1.min.js

Diagnosed by using Firebug, and setting it show all errors, as described in the accepted answer.

于 2011-11-29T09:10:48.963 回答
3

Jquery?!
你的意思是jQuery

Javascript 区分大小写。Jquery不一样jQuery

于 2008-12-04T01:11:43.790 回答
3

为了详细说明“文本/javascript”的答案,“应用程序/javascript”将在 Firefox 中工作并很好地加载 jQuery。但是,它不会在 IE 中加载文件。使用“文本/javascript”:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" ></script>
于 2010-03-31T15:35:56.370 回答
2

Raja 是对的,URL.Content 有效。

<script src="<%= Url.Content("~/Scripts/jquery-1.2.6.js")%>" type="text/javascript"></script>

此外,为防止您在将应用程序迁移到 IIS 服务器时感到惊讶,请不要使用 Web 开发服务器,而应在开发时使用 IIS。

您可以通过编辑 Web 属性直接从 Visual Studio 使用 IIS:

  • 转到“网络”标签
  • 选中“使用本地 IIS Web 服务器”
  • 单击“创建虚拟目录”
  • 如果适用,请转到 IIS 管理器以禁用创建的虚拟目录中的匿名访问。
于 2009-03-10T10:18:40.730 回答
2

如果您从 cdn 加载 jQuery 并从服务器加载本地脚本,我发现此错误的另一个原因。它们是独立加载的,所以如果本地脚本在 jQuery 之前完成,它也会在之前执行,这给了我们一个可爱的错误。如果 jQuery 不在浏览器缓存中,这尤其是一个问题,因此您可能会在第一次加载脚本时看到此错误并在稍后消失。

于 2011-02-10T14:23:08.483 回答
1

对我来说,当我的某些代码中存在真正的 Javascript 错误时,通常会发生此错误。这可以防止 jQuery.js 文件被完全解析。在 Firebug、Safari 或其他调试友好型浏览器中查看错误控制台。

于 2008-12-04T16:25:35.787 回答
1

常见的错误是在 Jquery.js 之前首先包含其他 Jquery 脚本(Jquery.validation.js)

于 2009-01-24T03:04:15.017 回答
0

这通常发生在您的 HTML 或 JavaScript 格式不正确时。

于 2008-12-04T01:06:03.147 回答
0

如果您的 javascript 中没有错误(例如:缺少括号),那么它要么不包括 jQuery 文件,要么您试图在该文件加载之前运行一些依赖 jQuery 的代码。

于 2008-12-04T01:06:12.163 回答
0

如果一切都失败了,请确保该文件具有正确的权限集。这只是发生在我身上!

您可以右键单击目录中的文件并在那里设置权限,或者只是在 Visual Studio 中创建另一个 .js 文件并复制并粘贴内容。像魅力一样工作。:)

于 2009-03-31T23:38:03.053 回答
0

尝试

<script src="<%= ResolveUrl("~/Scripts/jquery-1.2.6.js")%>" type="text/javascript"></script>
于 2009-04-07T20:50:49.257 回答
0

路径不对。仔细检查一下。

于 2009-08-05T13:57:04.643 回答
0

要将我的问题/解决方案添加到这个长长的列表中......

我使用 Windows 2003 在 IE7 中测试该站点。该站点运行良好,但 jQuery 根本没有运行。于是我直接去http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js发现ajax.googleapis.com 不在安全站点列表中。添加 *.googleapis.com 后一切正常。愚蠢的疏忽,但也许这会帮助处于类似情况的其他人。

于 2010-04-28T19:22:36.703 回答
0

我通过取消注释 _Layout.cshtml 中的 jQuery 引用解决了这个问题。重新启动网站后,一切都刚刚开始工作。

于 2011-03-27T06:23:21.970 回答
0

Correct! I have chased this down for days now, when you are using a new MVC project from scratch in VS, it has its own references to JQuery in the Layout.cshtml page. If you are attempting to reference JQuery within a page, it will get overwritten by the reference in the Layout.cshtml page. Comment the code in the masterpage (Layout.cshtml), and it will use your page references.

于 2015-03-18T16:06:10.063 回答