0

我正在使用 php codeigniter mvc 框架。我的控制器包含以下代码

$data2['rows2']=$this->data_model->getYear();
$this->load->view('new',$data2);

我的观点(在头部)有以下代码

<script>
$(document).ready(function() {
 var namesArr = **<?php echo var_dump(json_decode($rows2));?>;**

 var progressTrendsData = [[1304294461000,69,1304899261000,28],[1304294431000,3,1304899161000,32],[1304294431000,3,1304899161000,32],[1304294431000,3,1304899161000,32]];
 var chart;
 var options = {
     chart: {
         renderTo: 'trendsDiv',
         type: 'spline'
     },
     series: [{
     name: '',
     data: []
     }]
 };

 for(var i=0;i<namesArr.length;i++) {
    options.series.push({
            name: namesArr[i],
            data: progressTrendsData[i]
    });
 }

 chart = new Highcharts.Chart(options); 
 });
</script>

这是在视图的脚本部分调用 php 值的正确方法吗?我希望脚本作为按钮单击事件,并且var namesArr应该检索和存储数组['sdad','sadsad'.....]。我应该使用 ajax 来做到这一点吗?如果是这样,请在此处举例说明如何使用 ajax。

更新

我尝试了以下方式,但没有显示输出。

<script>
$(document).ready(function() {
 //var namesArr = <?php echo var_dump(json_decode($rows2));?>;
 var namesArr = new Array();
namesArr = <?php $rows2; ?>
 var progressTrendsData = [[1304294461000,69,1304899261000,28],[1304294431000,3,1304899161000,32],[1304294431000,3,1304899161000,32],[1304294431000,3,1304899161000,32]];
 var chart;
 var options = {
     chart: {
         renderTo: 'trendsDiv',
         type: 'spline'
     },
     series: [{
     name: '',
     data: []
     }]
 };
 for(var i=0;i<namesArr.length;i++) {
    options.series.push({
            name: namesArr[i],
            data: progressTrendsData[i]
    });
 }
 chart = new Highcharts.Chart(options); 
 });
</script>
4

3 回答 3

1

在你的控制器做

$data2['rows2']=$this->data_model->getYear();
$data2['rowsArray']=json_decode($data2['rows2']);

然后在视图中尝试

var namesArr = ['<?php echo implode("', '", $rowsArray); ?>']
于 2012-04-30T10:00:48.143 回答
0

也许尝试(如果您使用的是 jQuery):

$data2['rows2']=json_encode($this->data_model->getYear());

在视图中:

<script>
$(document).ready(function() {
 var namesArr =  jQuery.parseJSON('<?php echo $rows2;?>');

 var progressTrendsData = [[1304294461000,69,1304899261000,28],[1304294431000,3,1304899161000,32],[1304294431000,3,1304899161000,32],[1304294431000,3,1304899161000,32]];
 var chart;
 var options = {
     chart: {
         renderTo: 'trendsDiv',
         type: 'spline'
     },
     series: [{
     name: '',
     data: []
     }]
 };

 for(var i=0;i<namesArr.length;i++) {
    options.series.push({
            name: namesArr[i],
            data: progressTrendsData[i]
    });
 }

 chart = new Highcharts.Chart(options); 
 });
</script>

否则,您可以尝试通过以下方式将字符串从 php 评估为 json:

var namesArr =  eval('('+<?php echo $rows2;?>+')');

在此之后,您应该使用以下方法检查包含 namesArr 变量的内容:

console.log(namesArr);

并检查您的 javascript 控制台(应该在 Chrome 和 Firefox 中工作)。

于 2012-04-30T11:23:30.497 回答
-1

您可以在 JS 中调用 php 值,只需将 php 代码插入 javascript。尝试这样做:

var namesArr = new Array();
namesArr = <? print_r($rows2); ?>

确保$rows2返回一个数组。

于 2012-04-30T10:10:24.567 回答