我有以下代码片段,用于绘制饼图,其中$ valores包含要在图中显示的值。此代码按预期工作

<?php

           ...

$valores = '';
foreach ($dados as $dado){
    $valores .=  "['$dado[estado] - $dado[numero]' , $dado[numero] ],";
}
$valores = substr($valores, 0, -1);


?>
           ...

<script type="text/javascript">

pizzaPlot();

function pizzaPlot(){
    $(document).ready(function(){
          plot2 = jQuery.jqplot('chart2',
                    [[   <?php  echo $valores; ?>  ]],
            {
              title: {
                  text: 'Parques Tecnológicos por Estado',
                  show: true,
                  textColor: 'black',
                  fontSize: 26
              },highlighter: {
                    show: true,
                    formatString:'%s',
                    tooltipLocation:'sw',
                    useAxesFormatters:false
                },
              seriesDefaults: {
                shadow: false,
                renderer: jQuery.jqplot.PieRenderer,
                rendererOptions: {
                  startAngle: 180,
                  sliceMargin: 4,
                  showDataLabels: true }
              },
              legend: { show:true, location: 'w', tooltipContentEditor:'legenda' }
            }
          );

        });
    }




但是,当我将饼图绘图代码封装在名为pizzaPlot()的函数中时,将不再绘制图表。下面的代码与上一个代码略有不同,现在$ valores作为参数传递,而不是从脚本内部回显。

pizzaPlot("<?php echo $valores; ?> ");

function pizzaPlot(valores){

    alert(valores);
    $(document).ready(function(){
      plot2 = jQuery.jqplot('chart2',
                [[   valores  ]],
        {
          title: {
              text: 'Parques Tecnológicos por Estado',
              show: true,
              textColor: 'black',
              fontSize: 26
          },highlighter: {
                show: true,
                formatString:'%s',
                tooltipLocation:'sw',
                useAxesFormatters:false
            },
          seriesDefaults: {
            shadow: false,
            renderer: jQuery.jqplot.PieRenderer,
            rendererOptions: {
              startAngle: 180,
              sliceMargin: 4,
              showDataLabels: true }
          },
          legend: { show:true, location: 'w', tooltipContentEditor:'legenda' }
        }
      );
    });
}


从alert(valores)获得的消息与从echo $ valores获得的消息相同

最佳答案

在您的第一个代码中,您将获得此[[value of valores]]。您可以直接在代码中插入值。在您的第二个代码中,您基本上是这样做的:[["value of valores"]]。这使用"value of valores"作为字符串。

要解决此问题,请使用此函数来调用该函数:

pizzaPlot([[<?php echo $valores; ?> ]]);


并删除函数内部valore周围的括号。

08-25 16:38