Javascript 通过php的Highcharts饼图数据格式

Javascript 通过php的Highcharts饼图数据格式,javascript,jquery,json,highcharts,Javascript,Jquery,Json,Highcharts,我用高图表做饼图。下面是它的JS代码: $(document).ready(function () { var chart; var graphData = $("#graphContentdata").val(); console.log(graphData); var options = { chart: { renderTo: 'graphContainer', plotBackgroundColor: null,

我用高图表做饼图。下面是它的JS代码:

$(document).ready(function () {
var chart;

var graphData = $("#graphContentdata").val();
console.log(graphData);
var options = {
        chart: {
            renderTo: 'graphContainer',
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false
        },
        title: {
            text: 'SOV'
        },
        tooltip: {
            formatter: function() {
                return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
            }
        },
        plotOptions: {
            pie: {
                allowPointSelect: true,
                cursor: 'pointer',
                dataLabels: {
                    enabled: true,
                    color: '#000000',
                    connectorColor: '#000000',
                    formatter: function() {
                        return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
                    }
                }
            }
        },
        series: [{
            type: 'pie',
            name: 'Browser share',
           data: []
        }]
    }

    chart = new Highcharts.Chart(options);
    chart.series[0].setData("["+graphData+"]");

 });
问题是:

chart.series[0].setData("["+graphData+"]");
不创建图形,但如果我从控制台的
graphData
变量位置复制粘贴值,其工作原理如下:

chart.series[0].setData([['www.quora.com', 0.23],['www.slideshare.net', 0.25],['me', 99.52]]);
他正在工作


我在这里犯了什么错误?

问题是,当您使用

chart.series[0].setData("["+graphData+"]");
你需要这样做。您可以使用以下方法转换字符串:

您也可以,但在这种情况下,您需要打开和关闭字符串:

$.parseJSON("[[\"www.quora.com\", 0.23],[\"www.slideshare.net\", 0.25],[\"me\", 99.52]]");

您是否尝试将echo json_encode($data)?实际上,您的数据是一个php数组,在js中没有任何值。无论如何,在输入值中写入并不是最好的方法;但它给出了空字符串…是否有其他格式将其传递给饼图数据???[me]=99.52[www.qoura.com]=0.23[www.slideshare.net]=0.25是的,错误是因为您从输入值中获得的内容看起来像数组,但实际上是一个示例字符串。甚至我尝试将其作为JSON值传递,如:{“www.qoura.com”:0.23,“www.slideshare.net”:0.25,“me”:99.52}。。。但这也不起作用
chart.series[0].setData("["+graphData+"]");
chart.series[0].setData(eval("["+graphData+"]"));
$.parseJSON("[[\"www.quora.com\", 0.23],[\"www.slideshare.net\", 0.25],[\"me\", 99.52]]");