如何使用变量作为 js 代码

How to use a variable as js code?

本文关键字:js 代码 何使用 变量      更新时间:2023-09-26

我正在尝试使用jQuery(或highcharts)将数据添加到下面的函数中。问题是如何在不使用 eval 的情况下将数据嵌入到 javascript 代码中,因为我必须将所有代码编写为字符串?

function pie(data)
{
  $(function () {
    $('#renderingdiv').highcharts({
        chart: {
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false
        },
        title: {
            text: 'Browser market shares at a specific website, 2010'
        },
        tooltip: {
            pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
        },
        plotOptions: {
            pie: {
                allowPointSelect: true,
                cursor: 'pointer',
                dataLabels: {
                    enabled: true,
                    color: '#000000',
                    connectorColor: '#000000',
                    format: '<b>{point.name}</b>: {point.percentage:.1f} %'
                }
            }
        },
        series: [**data**]
    });
});
};

数据如下所示:

{'
            type: 'pie','
            name: 'Statuses','
            data: ['
                [WSCH,   377]'
        ,'
                [WMATL,   4]'
        ,'
                [WAPPR,   349]'
        ,'
                [NCOMP,   3]'
        ,'
                [INPRG,   56]'
        ,'
                [COMP,   18]'
        ,'
                [CLOSE,   697]'
        ,'
                [APPR,   420]'
        '
            ]'
        }

请问有什么想法吗?

这个快速而脏的函数将您的数据转换为有效的 JSON 并返回一个对象。

function parseData(data) {    
    data = data
        // remove '+line endings
        .replace(/'['n'r]+/g, '') 
        // insert double quotes for keys
        .replace(/(['[{,])'s*('w+)([,:])/g, '$1"$2"$3') 
        // replace values single quotes with double
        .replace(/(:)'s*'('w+)'s*'/g, '$1"$2"'); 
    return JSON.parse(data);
}

当然,您应该改进它以处理极端情况。

演示:http://jsfiddle.net/qq98D/2/(导致控制台输出)

但这只是一个解决方法。真正的解决方案是更改服务器输出以返回有效的 JSON。

结果(JSON 编码):

{"type":"pie","name":"Statuses","data":[["WSCH",377],["WMATL",4],["WAPPR",349],["NCOMP",3],["INPRG",56],["COMP",18],["关闭",697],["APPR",420]]}