【发布时间】:2016-10-13 03:42:29
【问题描述】:
我正在开始一个页面,其中一些预制/模拟数据被馈送到 Chart.JS 图表,例如:
data: [2755, 2256, 1637, 1608, 1603, 1433, 1207, 1076, 1056, 1048],
我想用真实/实时数据替换那些虚假数据。我可以用从 AJAX 调用传回的内容替换 html 页面的 <script> 部分吗?
IOW,我可以这样做吗:
$.ajax({
type: 'GET',
url:
'@Url.RouteUrl(routeName: "QuadrantData"
routeValues: new { httpRoute = true, unit = "un", begdate = "bd", enddate
"ed" })'
.replace("un", encodeURIComponent(_unit))
.replace("bd", encodeURIComponent(_begdate))
.replace("ed", encodeURIComponent(_enddate)),
contentType: 'text/plain',
cache: false,
xhrFields: {
withCredentials: false
},
success: function (returneddata) {
$("script").html(returneddata);
$("#newhourglass").addClass("hide");
},
error: function () {
console.log('error in ajax call t
QuadrantData');
$("#newhourglass").addClass("hide");
}
});
?
IOW,而不是:
$("html").html(returneddata);
...或类似的,类似这样的:
$("script").html(returneddata);
【问题讨论】:
-
您不需要将其添加到您的 HTML 页面中,您的数据在 returnddata 中,只需将其分配给您的图表.. 例如.. myChart.datasets[0].data = returneddata;我的图表。更新();。或类似的东西。
-
您可以删除原始脚本节点并创建一个新节点(或者只是简单地“eval()”修改后的字符串),而不是设置脚本的“html”(不会执行)。但是 a) 很难判断该特定效果是否真的能得到你想要的,b) 你不能只修改图表的数据属性(与尝试编辑可能/可能尚未执行的脚本相比)
-
从简单地更新图表数据到替换 html 标记内的所有内容之间还有很长的路要走。图表应该能够重新加载,如果不只是替换它并再次初始化它
-
我的页面上有三个图表,所以我不能只将所有返回的数据分配给一个图表。我可能需要创建三个不同的 ajax 调用。
-
我不知道我是否可以简单地“替换[图表]并再次对其进行初始化”,因为图表来自html语句,是一个简单的“画布”标签;让它生效的是 javascript,它为图表提供数据和选项,并创建图表。
标签: javascript jquery ajax asp.net-ajax script-tag