我正在使用 PHP 等服务器端技术生成 Highcharts JSON。
我从浏览器发送一个 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 对象并将字符串转换为函数,以便自动调用它。
最佳答案
你想要做的是eval()
所以使用它。您想要执行从服务器发送的未知代码。无论您尝试哪种方法,最终都会执行与 eval()
相同的操作。
如果您确定您发送的代码没问题,那么使用它没有什么坏处。
关于Javascript 字符串作为闭包函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15633998/