【问题标题】:Uncaught ReferenceError: $ is not defined in Power BI Embedded未捕获的 ReferenceError:$ 未在 Power BI Embedded 中定义
【发布时间】:2018-11-14 16:43:29
【问题描述】:

我正在尝试将 Power BI 仪表板嵌入到我的 ASP.NET Core 2.1 应用程序中。运行此应用程序时出现 javascript 错误,提示 $ 未定义。我已经在 div 中定义了这个变量,我正在尝试在脚本中访问它。这是我的 index.cshtml 代码。

@model WebApplication2.Models.EmbedConfig
    @{
        ViewBag.Title = "Dashboard";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

    <script src="https://npmcdn.com/es6-promise@3.2.1"></script>
    <script src="~/js/powerbi.js"></script>
    @if (!string.IsNullOrEmpty(Model.ErrorMessage))
    {
        <div id="errorWrapper">
            <h2>
                Error
            </h2>
            @Model.ErrorMessage
        </div>

        return;
    }
    <br />

    <a href="javascript:void(0);" class="btn btn-primary" id="backLink">Back</a>
    <br /><br />

    <h2>Embedded Dashboard</h2>

    <br />

    <div id="dashboardContainer"></div>

    <script>

        var accessToken = "@Model.EmbedToken.Token";

        var embedUrl = "@Html.Raw(Model.EmbedUrl)";

        var embedDashboardId = "@Model.Id";

        var models = window['powerbi-client'].models;

        var config = {
            type: 'dashboard',
            tokenType: models.TokenType.Embed,
            accessToken: accessToken,
            embedUrl: embedUrl,
            id: embedDashboardId,

            settings: {
                background: models.BackgroundType.Transparent
            }
        };

        // Get a reference to the embedded dashboard HTML element
        var dashboardContainer = $('#dashboardContainer')[0];

        // Embed the dashboard and display it within the div container.
        var dashboard = powerbi.embed(dashboardContainer, config);
    </script>

这是我的 .net core 2.1 应用程序中的 Index.cshtml。我收到一条错误消息,说 $ 未定义。我已经明确定义了dashboardContainer。为什么会出现此错误?

【问题讨论】:

  • "我已经在一个div中定义了这个变量"是什么意思?
  • 这一行 var dashboardContainer = $('#dashboardContainer')[0];正在尝试获取对嵌入式仪表板 HTML 元素的引用
  • 看起来您正在尝试使用 jQuery - 在此脚本之前,您是否检查过页面中包含 jQuery 脚本?
  • 我将布局 _Layout.cshtml 包含在我的索引中。 _Layout.cshtml 包含 jQuery 脚本

标签: javascript asp.net-core-mvc asp.net-core-2.0 powerbi-embedded


【解决方案1】:

似乎您需要包含 jquery。尝试改用经典 javascript 看看是否是问题所在。

替换 var dashboardContainer = $('#dashboardContainer')[0]; 和 var dashboardContainer = document.getElementById("dashboardContainer");

【讨论】:

  • 是的,我已经完成了,并且成功了。我想弄清楚为什么 $('#dashboardContainer')[0] 不起作用,因为我在 _Layout.cshtml 中包含了 JQuery。
  • 顺序很重要。 JQuery include 应该放在视图的 javascript 内容之前。尝试在布局中为您的 javascript 和样式使用部分。 @RenderSection("scripts", required: false),这在你的布局中。然后在您的页面内:@section scripts{ }
猜你喜欢
  • 2023-01-23
  • 2016-11-03
  • 2011-01-05
  • 2016-01-02
  • 2013-10-06
  • 2016-12-17
  • 1970-01-01
相关资源
最近更新 更多