我正在使用Highcharts来显示图表:当文档准备就绪时,ajax请求将获取数据(JSON格式)并使用一些默认数据和一些动态数据初始化chart
对象(分):
$('document').ready(function() {
var chart;
$.ajax({
url: "{{ path('stats_update') }}",
type: "POST",
dataType: "json",
success: function(data){
data.chart.renderTo = 'chart'; // id of the div element
chart = new Highcharts.Chart(data); // inizialize chart object
}
});
}); // end of document.ready
到目前为止一切顺利,除非我必须发回一些回调。它不起作用,我找不到原因。图表“冻结”并且不显示工具提示:
这是格式化程序函数回调应该初始化(工作)的方式:
var chart = new Highcharts.Chart({
tooltip: {
formatter: function() { return this.x; }
});
这是我使用JSON发回回调的方式:手动输出JSON的Twig模板引擎 - 没有json_encode(不工作):
{
"tooltip" : {
"formatter" : "function() { return this.x; }"
}
}
使用jQuery进行JSON解析时没有错误。我管理员我不是javascript也不是jQuery大师...感谢您的帮助。
答案 0 :(得分:3)
您的twig模板中的函数将输出为字符串而不是函数。
$.ajax({
url: "{{ path('stats_update') }}",
type: "POST",
dataType: "json",
success: function(data){
data.chart.renderTo = 'chart'; // id of the div element
data.tooltip.formatter = eval('(' + data.tooltip.formatter + ')');
chart = new Highcharts.Chart(data); // inizialize chart object
}
});
答案 1 :(得分:1)
您无法使用JavaScript / JSON序列化函数。
答案 2 :(得分:0)
我没有从服务器请求整个options
对象,而是只请求数据并按如下方式创建图表 -
$('document').ready(function() {
var chart;
$.ajax({
url: "{{ path('stats_update') }}",
type: "POST",
dataType: "json",
success: function(data){ // <--- send just the data array from server
chart = new Highcharts.Chart({
chart: {
renderTo: 'chart'; // id of the div element
},
//...
tooltip: {
formatter: function() {
return this.x;
}
},
//...
series: [{
data: eval('(' + data + ')')
}]
}); // inizialize chart object
}
});
}); // end of document.ready