2014-11-28 7 views
1

도넛 차트를 만들고 있는데 어디에 문제가 있습니까? 모든 데이터가 서버 측에서 가져옵니다. 다음은 설정된 값이있는 차트의 html입니다. PHP 변수를 값으로 반향하는 방법은 무엇입니까?자바 스크립트 내부의 PHP 변수

<html> 
<head> 
<script src="Chart.js"></script> 
<style> 
body{ 
padding: 0; 
margin: 0; 
} 
#canvas-holder{ 
width:25%; 
} 
</style> 
</head> 
<body> 
<div id="canvas-holder"> 
<canvas id="chart-area" width="500" height="500"></canvas> 
</div> 
<script> 
var doughnutData = [ 
{ 
value: 500, 
color:"#941616", 
highlight: "#FF0000", 
label: "Needs Agreement" 
}, 

{ 
value: 500, 
color: "#575757", 
highlight: "#777777", 
label: "Pre-Production" 
}, 

{ 
value: 500, 
color: "#aaaaaa", 
highlight: "#cccccc", 
label: "In Production" 
} 
]; 
window.onload = function(){ 
var ctx = document.getElementById("chart-area").getContext("2d"); 
window.myDoughnut = new Chart(ctx).Doughnut(doughnutData, {responsive : true}); 
}; 
</script> 
</body> 
</html> 

내 PHP 코드는 API를 통해 필요한 데이터를 가져 와서 각 값을 변수에 저장합니다.

<?php 
$needs_agreement = 148000; 
$pre_produciton = 137000; 
$in_production = 3678000; 
?> 

또 다시, 값이 위의 경우 PHP 변수를 반향시키는 가장 좋은 방법은 무엇입니까?

UPDATE :

var doughnutData = [ 
{ 
value: <?php echo $needs_agreement ?>, 
color:"#941616", 
highlight: "#FF0000", 
label: "Needs Agreement" 
}, 

{ 
value: <?php echo $pre_production ?>, 
color: "#575757", 
highlight: "#777777", 
label: "Pre-Production" 
}, 

{ 
value: <?php echo $in_production ?>, 
color: "#aaaaaa", 
highlight: "#cccccc", 
label: "In Production" 
} 
]; 

대답은 작동하지 않았다으로 제시 한 위의 코드.

+0

가능한 중복 [PHP에서 JavaScript로 변수 및 데이터를 전달하는 방법] (영문) (http://stackoverflow.com/questions/23740548/how-to-pass-variables-and-data-from-php-to-javascript) –

+0

_3을 (를) 사용하고 있습니다. [이 받아 들인 대답] (http://stackoverflow.com/a/23740549/17300) –

+0

에서 JavaScript_ 접근법에 직접 데이터를 에코 @ StephenP 예 그 성공에 그 대답에있는 방법을 사용하여 메아리 시도했습니다. –

답변

2

아무 것도 자바 스크립트 중간에 PHP 변수를 echo'ing하지 않습니다.

<script> 
var doughnutData = [ 
{ 
value: <?php echo $some_data ?>, 
color:"#941616", 
highlight: "#FF0000", 
label: "Needs Agreement" 
} 
</script> 

는 PHP의 모든

브라우저로 문서를 전송하기 전에 처리하기 때문에 자바 스크립트가 클라이언트가 실행됩니다 시간에 의해 완료됩니다.

+0

PHP가 클라이언트에 의해 실행될 때까지 완료 될 것이라는 것을 의미합니까? – Grice

+0

예! PHP는 서버 측이고 자바 스크립트는 클라이언트 측입니다. JS가 실행되기 전에 모든 PHP가 완료됩니다. 이 답변을 확장하려면 PHP로 데이터를 인코딩 한 json을 고려하고 자바 스크립트에서 구문 분석하십시오. 이것은 당신에게 기능적인 자바 스크립트 객체를 줄 것이고, 톤 값을 더 쉽게 움직일 수있게 해 줄 것입니다. 나는. var data = JSON.parse (''); –

+0

아니요 자바 스크립트 코드가 완료됩니다. 위에서 보았 듯이 중간에 PHP 덩어리가 들어 있기 때문에 실행되지 않습니다. 브라우저로 보내기 전에 바뀌었을 것입니다. – Erik

0

나는 마지막으로 그것은 매우 내 PHP 파일의 끝에서 일하고있어 :

echo '<script>' . 'var zx =' . $total_need . '</script>'; 
echo '<script>' . 'var zy =' . $total_pre . '</script>'; 
echo '<script>' . 'var zz =' . $total_in . '</script>'; 

하는 HTML 부분은 다음과 같을 것이다 :

var doughnutData = [ 
 
{ 
 
value: zx, 
 
color:"#941616", 
 
highlight: "#FF0000", 
 
label: "Needs Agreement" 
 
}, 
 

 
{ 
 
value: zy, 
 
color: "#575757", 
 
highlight: "#777777", 
 
label: "Pre-Production" 
 
}, 
 

 
{ 
 
value: zz, 
 
color: "#aaaaaa", 
 
highlight: "#cccccc", 
 
label: "In Production" 
 
} 
 
];

관련 문제