【问题标题】:SCRIPT5009: '$' is undefined , when adding scripts inside my partial viewSCRIPT5009:'$' 未定义,在我的局部视图中添加脚本时
【发布时间】:2014-05-07 13:28:50
【问题描述】:

我有一个主视图,它呈现另一个部分视图如下:-

@Html.Partial("_PagedTable",Model)

我在_PagedTablepartial 视图中定义了如下脚本:-

<div id ="RackTable">
    <script type="text/javascript">
        $(document).ready(function () {

目前局部视图中的脚本运行良好,但是当我在 IE 和 firebug 工具上打开 F12 开发人员工具时,脚本上总是会出现以下错误,这是在局部视图中定义的脚本上引发的观点:-

SCRIPT5009: '$' is undefined

虽然有错误,但用户不会注意到这个错误,因为不会显示错误消息(当然除非他们打开 F12 开发人员工具),并且局部视图中的脚本运行良好。那么这个错误究竟表明了什么?

【问题讨论】:

  • 这个错误说明jQuery没有正确加载。这也意味着你的 jQuery 不应该工作。
  • 但正如我所指出的,它运行良好,并且不会向用户显示任何错误..
  • Hmmmm...那将是不寻常的。这表明你在某个地方调用了一个尚未定义方法的函数。
  • 我 100% 确定脚本运行良好,因为当我删除脚本时,我失去了所有 Jquery 功能..所以这意味着脚本已加载并且运行良好..

标签: javascript jquery asp.net-mvc razor


【解决方案1】:

你确定里面的代码

$(document).ready(function () {

正在执行吗?

该错误表示 jQuery 未加载,因此您的脚本将无法执行

我从 SO(例如IE10 and jQuery: SCRIPT5009: "$" is undefined)发现了类似的问题,但它们似乎都发生在 IE 上,但你提到它也发生在 Firefox 上,所以我只建议检查你的 jQuery 是否正确加载.

【讨论】:

  • 是的,它运行良好,因为如果我删除引发错误的 Jquery,所有 JQuery 功能都将停止工作,这表明 Jquery 正在运行并且加载良好......
  • 另一个问题,为什么我会收到此错误。因为我在布局视图中添加了所有 Jquery 脚本?这是否与这些脚本直接在我的部分视图中定义的事实有关?
  • 在这种情况下,您可以尝试将您正在使用的除jquery之外的其他脚本取出来,看看它是否可以缩小问题范围。顺便说一句,抱歉太晚了,无法在上面看到您的评论
【解决方案2】:

通常,jQuery 在您的布局页面 (MasterPage) 中仅在文件末尾引用。 因此,您的局部视图在此之前出现,当时尚未加载 jQuery。

奇怪的是浏览器抛出了这个异常,但是 jQuery 仍然可以工作。

值得尝试使用 Razor Sections:

<html>
<body>

    [View]
    [_PartialView]
        @section Scripts {
            <script type="text/javascript">
                $(document).ready(function () {
                    // stuff
                });
            </script>
        }
    [_PartialView - END]

    <!-- jQuery and other references -->
    <script src="jquery.min.js"></script>

    @RenderSection("Scripts", required: false)
</body>
</html>

【讨论】:

    猜你喜欢
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多