jquery - 使用数据库中的数据加载canvasjs图表

标签 jquery coldfusion coldfusion-9 canvasjs

我正在使用coldfusion将数据加载到饼图中,但我得到的不是饼图,而是35个数据点的列表,并且没有显示任何图表。

这是我的代码:

<script type="text/javascript">
$(document).ready(function () {
    $.getJSON("display.cfc?method=getData&lob=all", function (result) {
        alert(result);
        var chart2 = new CanvasJS.Chart("piechart", {
            theme: "theme2",
            legend: {
                fontSize: 12,
                horizontalAlign: "right",
                verticalAlign: "center"
            },
            data: [{
                type: "pie",
                showInLegend: true,
                dataPoints: result
            }]
        });
        chart2.render();
    });
});
</script>
<div id="piechart" style="display: inline-block; height: 200px; width: 400px;"></div>

我的 Coldfusion 函数返回以下内容:

{y: 142, legendtext: "In Progress"}, {y: 1083, legendtext: "New"},{y: 48, legendtext: "Error"} 

这是函数:

<cffunction name="getData" access="remote" returnformat="json">
<cfargument name="lob" type="string" required="yes" />
<cfset var theQuery = getTransitionStatusCounts(#arguments.lob#)>
<cfset var rObj = "">
<cfset var rObjArray = []>

<cfoutput query="theQuery">
    <cfset rObj = '{y: #count#, legendtext: "#status#"}'>
    <cfset arrayAppend(rObjArray, rObj)>
</cfoutput>

<cfreturn rObjArray>

</cffunction>

其他人也遇到过这个问题吗?

最佳答案

2 件事。
1. 数据点需要位于数组中
2.按原样使用coldfusion的json。不要在 cfc 中手动创建 json

$(document).ready(function () {
   $.getJSON("display.cfc?method=getData&lob=all", function (result) {       
      dp = [];
      for(var i = 0 ; i< result.DATA.length; i++){
          dp.push({y: result.DATA[i][0], label: result.DATA[i][1]})};       
      var chart2 = new CanvasJS.Chart("piechart", {
        theme: "theme2",
        data: [{
            type: "pie",
            dataPoints: dp }]});
        chart2.render();});});

这就是我的 cfc 中的内容

<cfcomponent access="remote">
<cffunction name="getData" access="remote" returnformat="json">
    <cfargument name="lob" type="string" required="yes" />
    <cfset var myQuery = QueryNew("y,label")/>
    <cfset QueryAddRow(myQuery,3) />

    <cfset QuerySetCell(myQuery, "y" , 142,1) />
    <cfset QuerySetCell(myQuery, "label" , "In Progress", 1) />

    <cfset QuerySetCell(myQuery, "y" , 1083,2) />
    <cfset QuerySetCell(myQuery, "label" , "New",2) />

    <cfset QuerySetCell(myQuery, "y" , 48,3) />
    <cfset QuerySetCell(myQuery, "label" , "Error",3) />

    <cfreturn myQuery/>    
  </cffunction>
</cfcomponent>

关于jquery - 使用数据库中的数据加载canvasjs图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22015534/

相关文章:

coldfusion - 希望访问/输出与 dspBody() 分开的页面的关联图像。我该怎么做呢?

jquery - DataTable 如何添加带有属性的行 Jquery?

jquery - 使用 AJAX 在 Controller 中接收空模型

php - %5B% 和 %5B0% 之间的区别?

javascript - 语法错误: missing } after property list

mysql - Notes 数据库到 MySQL(使用 CF?)/或如何获取 NSF 数据结构

coldfusion - REST GET 函数 - 将结构作为 JSON 返回

coldfusion - CFIMAP 从所有文件夹中读取电子邮件

sql-server-2005 - 所有用户的成员身份 SHA1 哈希值不相同

javascript - 如何使用ajax网格中的数据刷新作为触发器?