gpt4 book ai didi

javascript - 在 jQuery : equivalent to Html. Raw() 中将字符串从服务器转换为 HTML?

转载 作者:行者123 更新时间:2023-11-30 20:35:49 26 4
gpt4 key购买 nike

我有一个简单的图表(使用 Chartist,但这与我的问题无关)。到目前为止,我已经为它加载了如下数据:

 <script>
(function () {
if ($('#ChartistDebtChart').get(0)) {
var options = { };

new Chartist.Line('#ChartistDebtChart', {
labels: [@Html.Raw(String.Join(", ", Model.Debt.BalanceOverTime.Select(c=> @"'" + c.Item1 + @"'").ToList()))],
series: [
[@Html.Raw(String.Join(", ", Model.Debt.BalanceOverTime.Select(c=> ((int)c.Item2)).ToList()))],
]
}, options);
}
})();

</script>

这将呈现如下内容:

 new Chartist.Line('#ChartistDebtChart', {
labels: ['13-02-2018', '16-03-2018', '13-04-2018', '13-04-2018'],
series: [
[9000, 9056, 9156, 9256],
]
}, options);

哪个工作完美!

但是,如果我在从后端获取数据的地方执行相同的操作。我将使用 jQuery 从我们的 Controller 执行 GET。当我们写入此数据时,'13-02-2018'、'16-03-2018'、'13-04-2018'、'13-04-2018' 不会被视为 HTML 并且图表中未显示数据。

所以我的问题是:在 jQuery 中使用 GET 时,如何将后端字符串视为 HTML?

我尝试了以下方法:

尝试 1:在列表上使用 Map:

  new Chartist.Line('#DebtDeteriorationGraph', {
labels: [result.DebtDeteriorationOverTime.map(item => item.Item1).join(", ")],
series: [
['70000','55000','45000','30000','25000','20000']
]
}, options);

硬编码 y 值以使其变得简单,我尝试了 result.DebtDeteriorationOverTime.map(item => item.Item1).join(", ") 将其视为一个字符串而不是多个。

尝试 2:从服务器提供准确的字符串:

我制作了一个字符串,它应该是这样的 ('13-02-2018', '16-03-2018', '13-04-2018', '13-04-2018'),然后像这样插入:

  new Chartist.Line('#DebtDeteriorationGraph', {
labels: [result.DebtDeteriorationOverTimeLabelString],
series: [
['70000','55000','45000','30000','25000','20000']
]
}, options);

这在 x 轴上也被视为“1 项”。

尝试 3:从服务器获取字符串并尝试解析为 HTML

var htmlRes = $('<div/>').html(result.DebtDeteriorationOverTimeLabelString).text();
new Chartist.Line('#DebtDeteriorationGraph', {
labels: [htmlRes],
series: [
['70000','55000','45000','30000','25000','20000']
]
}, options);

所有 3 次尝试都被视为字符串,因此与我从 C# 运行 Html.Raw() 时的效果不同。

有什么想法吗? :-)

最佳答案

您正在尝试让您的响应被视为“HTML”,但您并不真正需要它。 labels 是 javascript 数组(字符串),因此您需要 javascript 数组,其中每个项目代表一个标签。最近的尝试是:

labels: [result.DebtDeteriorationOverTime.map(item => item.Item1).join(", ")]

产生一个字符串的 javascript 数组。相反,您需要:

labels: result.DebtDeteriorationOverTime.map(item => item.Item1)

因为 DebtDeteriorationOverTime 已经是数组,但不是你需要的,所以你使用 map 来生成你需要的数组。无需在 [] 中加入任何内容或包含任何内容。

请注意,您还可以从您的 api 返回表示图表信息(带有 labelsseries 属性)的整个 json 对象。然后你可以这样做:

new Chartist.Line('#ChartistDebtChart', result.chartData, options);

关于javascript - 在 jQuery : equivalent to Html. Raw() 中将字符串从服务器转换为 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49855857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com