2016-05-14 177 views
1

我有一个数组$results,我需要在代码的JavaScript部分中使用它。我试图json_encode(),但它没有工作..如何在javascript中打印php数组

下面是代码

<?php 
    //... 
    include realpath($_SERVER['DOCUMENT_ROOT'] . '/Classes/Controllers/ReportController.php'); 
    $vaccRep= ReportController::getVacRep(); 

    include realpath($_SERVER['DOCUMENT_ROOT'] . '/Classes/Controllers/VaccineController.php'); 
    $names=VaccineController::getVCName(); 
?> 

<canvas id="bar" height="195" width="250" style="width: 250px; height: 195px;"></canvas> 
<script> 
    //THIS IS THE PART THAT WILL BE THE OTPUT OF THE QUERY 

    var barChartData = { 
     labels: <?php$obj=json_encode($names); var_dump($obj);?>, 
     datasets: [{ 
      highlightFill: "#45668e", 
      highlightStroke: "#45668e", 
      fillColor : "#1ABC9C", 
      strokeColor : "#1ABC9C", 
      data: <?php $obj=json_encode($vaccRep); var_dump($obj);?> 
     }] 
    }; 


    new Chart(document.getElementById("bar").getContext("2d")).Bar(barChartData); 
    <?php $obj=json_encode($vaccRep); var_dump($obj);?> 
</script> 
+1

分享得到这个你试过的代码。 –

+0

你可以json_encode在php中的数组,并在JavaScript中使用它。 –

+0

你的问题解决了? – C2486

回答

0

简单地回响在JS php的阵列json_encode(),像这样:

$phpArray = array('name'=>'mani','email'=>'[email protected]','mobile'=>'123467890'); 

PHP数组看起来像这样

Array 
(
    [name] => mani 
    [email] => [email protected] 
    [mobile] => 123467890 
) 

<script> 
var jsArray = []; 
var jsArray = <?php echo json_encode($phpArray);?>; 
console.log(jsArray); 
</script> 

你将在控制台

Object { name="mani", email="[email protected]", mobile="123467890"} 
+0

@ n.am现在你可以投我的答案;);) –

0

怎么样

<?php 
    echo "<script>"; 
    echo "var $results = JSON.parse('" . json_encode($results) . "');"; 
    echo "<script>"; 
?> 

,然后使用$在JavaScript代码的结果任何地方,但要确保这脚本块在您使用它之前加载。

+2

由于'json_encode()'将生成有效的javascript对象,因此不应该需要'JSON.parse()' – RiggsFolly

0

你可以尝试这样的JavaScript打印PHP数组

<?php 
    $abc=["a","b","c"]; 
?> 
<script type="text/javascript"> 
    var abc = "<?php echo (implode(',',$abc));?>"; 
    var abcArr = abc.split(","); 
    console.log(abcArr); 
</script> 
+0

如果在此数组中包含逗号的字符串会怎样?例如。 '[“a”,“b”,“c”]'。额外的空字符串将在该数组中,这是不正确的。 –

+0

@YuriyYakym,你有什么建议来防止这种情况发生。我只是提供了方式。 – C2486

+0

只有在确定我们使用的分隔符不是任何数组元素的一部分时,才可以使用您的解决方案。 –

0

您可以简单地使用此代码:

<?php 
    $array = ["a", 1, 2, "b,"]; 
    echo "<script>"; 
    echo "var data = ".json_encode($array).';'; 
    echo "</script>"; 
?> 

这段代码的输出将是: <script>var data = ["a",1,2,"b,"];</script>,会出现什么创建正确的JavaScript数组。