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

PHPコードをJavaScriptに挿入するだけで、JSでphp値を呼び出すことができます。これを試してください:

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

$rows2が配列を返すことを確認してください。

于 2012-04-30T10:10:24.567 に答える