【问题标题】:Highcharts dynamic name with coldfusion带有coldfusion的Highcharts动态名称
【发布时间】:2022-05-01 11:16:28
【问题描述】:

我正在使用 Highcharts 显示饼图。我正在尝试输出一个包含两个字段的冷融合查询。分类名称和计数。我正在努力显示名称。当我将名称命名为“分类”之类的名称时,它会起作用并根据计数构建图表。如果我将#classification# 变量添加到名称中,它不会显示任何内容。

这是我正在尝试的没有结果的方法。

series: [{
    name: \'Classification\',
    colorByPoint: true,
    data: [
    <cfoutput query=\"qryCounts\">
    {
        name: #classification#,
        y: #count#
    },
    </cfoutput>
  ]
}]

这是有效的,但为每个分类显示相同的名称。

series: [{
        name: \'Classification\',
        colorByPoint: true,
        data: [
        <cfoutput query=\"qryCounts\">
        {
            name: \'Classification\',
            y: #count#
        },
        </cfoutput>
      ]
    }]

关于我做错了什么的任何想法?

  • 您忘记在变量#classification# 周围加上引号?
  • y: #count# 有效,因为 y 是数字。但是,name: #classification# 不起作用,因为 name 是一个字符串。因此,您需要使用 name: \'#classification#\' 这样的引号输出它
  • 那也不会渲染任何东西。我以前曾尝试过。
  • 如果硬编码字符串有效,则没有明显的原因相同的代码不能处理动态值,除非代码不同或查询值包含错误字符。 A)发布查询数据的转储 b)查看 js 控制台是否有错误
  • @spacerobot classification 列中是否有任何撇号(单引号)作为值?如果是这样,那肯定是导致错误的原因。如果您确实有撇号,那么您可以转义它们,或者使用双引号作为字符串终止分隔符,前提是您的数据中没有双引号。

标签: highcharts coldfusion


【解决方案1】:

每当您将 cfml 变量作为直接 Javascript 代码输出时,请始终尝试使用 encodeForJavascript()

这将确保:

  • 字符串已正确转义,因此您的 Javascript 不会中断(例如,当撇号、反斜杠 , 换行符或其他特殊字符在您的字符串中)
  • 您的应用程序可以更安全地抵御 XSS 攻击

要检测由非转义变量创建的此类 Javascript 错误,请查看浏览器 Web 开发工具中的控制台输出(正如其中一位评论者已经提到的)。在那里,您将看到破坏 Javascript 并出现异常的代码和字符串。

此外,如果您将 Javascript 注入到 html 属性中,例如 'onClick' 您最好也使用 encodeForHTMLAttribute() 进行编码,例如:

<cfsavecontent variable="alertText">
 "This text has linebreaks,
slashes like / or \ and apostrophes ' that
would break any javascript code on output" but also german umlaute lke ä or ö or ü
</cfsavecontent>
<cfoutput>

    <button onClick="alert('#encodeForHTMLAttribute( encodeForJavascript( alertText ) )#');">Working click me</button>

    <button onClick="alert('#alertText#');">Broken click me</button>

</cfoutput>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多