Javascript 字符串作为闭包函数

标签 javascript jquery json twitter-bootstrap highcharts

我正在使用 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 响应中看到的,我得到了双引号中的函数(""),

我的问题是

  1. 由于这是一个字符串,我无法将其作为函数调用。

  2. 如果我在 PHP 中删除 (""),则 jQuery Ajax 会抛出“无效 JSON 或解析错误”错误

  3. 我不允许使用 eval(),因为这不是一个好的编程习惯。

是否有一种方法可以让我迭代 JSON 对象并将字符串转换为函数,以便自动调用它。

最佳答案

你想要做的是eval()所以使用它。您想要执行从服务器发送的未知代码。无论您尝试哪种方法,最终都会执行与 eval() 相同的操作。

如果您确定您发送的代码没问题,那么使用它没有什么坏处。

关于Javascript 字符串作为闭包函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15633998/

相关文章:

javascript - React Native TextInput 不允许输入/文本更改

javascript - 在 Angular 选择特定选项后如何将下拉列表设置为默认值

javascript - 主页 slider 在移动设备上显示不佳

javascript - 使用jquery将本地mp3文件发送到api服务器

javascript - AngularJS ngoptions 下拉菜单

javascript - React TypeError : _this2. props.variations.find 不是函数

javascript - 如何在React页面加载之前提前预加载i18n?

javascript - 带有 WP_Query 的 Ajax Post Filter 仅针对类别触发一次

javascript - 查询。选择具有类但没有样式 ="display:none;"属性的所有元素

angularjs - 如何在 AngularJs 中对字典使用 ng-repeat?