我使用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