2012-04-30 8 views
0

私はphp codeigniter mvc frameworkを使用しています。私のコントローラは、(ヘッド部に)次のコードjavascript/jqueryでPHPの値を呼び出すには?

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

そして、私のビューで構成され、これはビューのスクリプト部分でPHPの値を呼び出すための正しい方法です以下のコード

<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> 

を持っていますか?私はこのスクリプトをボタンクリックイベントとして欲しかったし、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> 

答えて

1

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

は、次にビューであなただけのJavaScriptにPHPコードを挿入するJSにPHPの値を呼び出すことができます

var namesArr = ['<?php echo implode("', '", $rowsArray); ?>'] 
+0

私はあなたが言及した方法を試しましたが、出力を得ることに失敗しました。 – Anil

+0

Farhadの間違ったコードを使用してコードを更新しました。私の提案したコードで得られる正確な出力は何ですか?あなたはどんなエラーを受けていますか? –

+0

私はあなたの例を試したが、部分的に成功する可能性があります。 'var namesArr = ['<?php echo implode("'、 '"、$ rowsArray1);を使用しようとしています。 ?> '] '配列を格納すると、出力として22,11,33,44が表示されますが、表示された文字列から各値にアクセスしたかったのです。インデックスを使用して各値にアクセスする方法はありますか? – Anil

-1

を試してみます。これを行うにしてください:

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

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

+0

これは多くの構文エラーがあります。 [配列Obj]?> 'と何かが起こることを期待してください。 –

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にevalを文字列にしてみてください可能性があります

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

この後、namesArr変数の内容を確認する必要があります。

console.log(namesArr); 

とjavascriptコンソールを確認してください(ChromeとFirefoxで動作するはずです)。

関連する問題