我使用PHP等服务器端技术生成Highcharts JSON。Javascript字符串作为关闭函数
从浏览器我发送一个AJAX请求来获取完整的Highcharts JSON,然后呈现它。
对于如我的Ajax响应是
[
{
"plotOptions":{
"enabled":false,
"series":{
"stacking":"",
"point":{
"events":{
"click":"function(e){console.log(e.point.config); console.log(e.point.category)}"
}
}
}
},
"chart":{
"type":"column",
"renderTo":"leftTopContainer",
"polar":false
},
"series":[
{
"name":"netpos",
"data":[6700,8200,11500]
}
],
"title":{
"text":"Future Financial Commitments-5Y Yr View"
},
"xAxis":{
"categories":["2010","2011","2012"]
}
}
];
获得服务器端的响应后,我使其使用下面的代码
new Highcharts.Chart(responseData);
惟独事件工作正常
"events":{
"click":"function(e){console.log(e.point.config); console.log(e.point.category)}"
}
正如你可以在JSON响应,我在双引号取得功能(”“)看到,
我的问题是
由于这是一个字符串,我不能打电话的功能。
如果我删除(”“)在PHP随后的jQuery的Ajax抛出一个错误‘无效的JSON或解析错误’
我不允许使用eval(),因为这不是一个良好的编程习惯。
有没有办法让我可以遍历JSON对象并将字符串转换为函数以便它会自动调用。
有什么特别的原因,你不只是绑定你的JS代码中的事件处理程序? – Alnitak 2013-03-26 09:57:01
在JSON中传递JavaScript代码也不是一个好的编程实践 – 2013-03-26 10:05:32
@Alnitak我们正在构建服务器端的图表创建,并且我们已经将所有事件处理函数写入了XML文件。我们正在从XML读取事件数据并生成JSON。 – 2013-03-26 10:53:43