首页 文章

通过Ajax从PHP使用JSON生成HighCharts图

提问于
浏览
0

我正在创建一个包含多个用户可定义图形的页面 .

更改图形详细信息后,将通过Ajax调用将其保存到服务器,然后必须重新创建图形 .

我试图通过生成JSON返回到浏览器来在服务器端创建PHP图形 .

到目前为止,我的问题是在从服务器返回json数据后呈现图形 .

问题似乎包括json中的系列数据 .

以下是JSON返回的内容:

{"chart":{   "type":["column"]},
   "credits":false,
   "legend":{"enabled":false},
   "title":{"text":"Turnover by Product","align":"left","y":7,
          "style":{"fontSize":"10px"}},
   "xAxis":{"title":{"text":"Total Sales"}},
   "series":[
         {"name":"BA","data":[22375004.21]},
         {"name":"FR","data":[82542490.9]},
         {"name":"GA","data":[531139.77]},
         {"name":"MS","data":[112142]},
         {"name":"ON","data":[23464497.44]},
         {"name":"PO","data":[74623237.35]},
         {"name":"TO","data":[25845184.81]},
         {"name":"VG","data":[51496496.25]},
         {"name":"WM","data":[6849331.4]}]}
}

当我尝试:

var cgraphdata = $.ajax({
   url: "/graphs/data/format/json",
   global: false,
   type: "POST",
   dataType: "json",
   data: {type:graphtypeID},
   async: false,
   success: function(data) {
        }
}).responseText; // json returned in cgraphdata
var rgResult = JSON.parse(cgraphdata); // convert to javascript object
// currentGraph = id of container div for current graph
rgResult.chart.renderTo = currentGraph;  // set render target
newGraph = new Highcharts.Chart(rgResult);  // create chart

这会导致Highcharts Error 14.如果我排除数据,我会得到一个带有 Headers 和轴的空白图表 .

这是否意味着在创建图表后必须单独加载数据(上一行)?

编辑:我已检查为每个数据系列传递的值是数字 - 错误14暗示文本作为数据值传递 .

理查德

1 回答

  • 0

    AJAX是异步的,因此您应该在成功处理程序中进行图形更新 . 此外,只要您使用正确的标头将数据作为JSON提供,就应该已经在处理程序中解析它,并且您不需要指定dataType .

    所以,沿着这些方向发展 .

    $.ajax({
       url: "/graphs/data/format/json",
       type: "POST",
       data: {type:graphtypeID},
       success: function(result)
       {
           new Highcharts.Chart(result);
       }
    });
    

    (当然,你需要在处理程序中做正确的事情,我只是不确定你的情况会是什么,所以我总结了:)

相关问题