簡體   English   中英

如何使用變量作為js代碼?

[英]How to use a variable as js code?

我正在嘗試使用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”:“ Statuss”,“ data”:[[“ WSCH”,377],[“ WMATL”,4],[“ WAPPR”,349],[“ NCOMP” ,3],[“ INPRG”,56],[“ COMP”,18],[“ CLOSE”,697],[“ APPR”,420]]}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM