147 votes

Passer un tableau PHP à une fonction JavaScript

J'essaie d'obtenir une variable de tableau PHP dans une variable JavaScript.

Ceci est mon code:

 <html>
    <head>
        <script type="text/javascript">
              function drawChart(row,day,week,month,date)
              {
                  // Some code...
              }
        </script>
    </head>

    <body>
        <?php
            for($counter = 0; $counter<count($au); $counter++)
            {
                switch($au[$counter]->id)
                {
                    case pageID.'/insights/page_active_users/day':
                        $day[] = $au[$counter]->value;
                    break;
                    case pageID.'/insights/page_active_users/week':
                        $week[] = $au[$counter]->value;
                    break;
                    case pageID.'/insights/page_active_users/month':
                        $month[] = $au[$counter]->value;
                    break;
                }
            }
        ?>
        <script>
            drawChart(600/50, '<?php echo $day; ?>', '<?php echo $week; ?>', '<?php echo $month; ?>', '<?php echo createDatesArray(cal_days_in_month(CAL_GREGORIAN, date('m',strtotime('-1 day')), date('Y',strtotime('-1 day')))); ?>');
        </script>
    </body>
</html>
 

Je ne peux pas obtenir la valeur du tableau PHP.

Comment puis-je résoudre ce problème?

215voto

Thrustmaster Points 13656

Utilisez JSON .

Dans l'exemple suivant, $php_variable peut être n'importe quelle variable PHP.

 <script type="text/javascript">
    var obj = <?php echo json_encode($php_variable); ?>;
</script>
 

Dans votre code, vous pourriez utiliser comme suit:

 drawChart(600/50, <?php echo json_encode($day); ?>, ...)
 

Dans les cas où vous devez analyser un objet à partir d'une chaîne JSON (comme dans une demande AJAX), le moyen le plus sûr consiste à utiliser JSON.parse(..) comme ci-dessous:

 var s = "<JSON-String>";
var obj = JSON.parse(s);
 

83voto

Tarun Gupta Points 1369

vous pouvez convertir des tableaux php en javascript à l'aide de la fonction json_encode () * de php

 <?php $phpArray = array(
          0 => "Mon", 
          1 => "Tue", 
          2 => "Wed", 
          3 => "Thu",
          4 => "Fri", 
          5 => "Sat",
          6 => "Sun",

    )
?>

<script type="text/javascript">

    var jArray= <?php echo json_encode($phpArray ); ?>;

    for(var i=0;i<6;i++){
        alert(jArray[i]);
    }

 </script>
 

15voto

user3597213 Points 11

Transfert de données entre les deux plate-forme nécessite un format de données commun. JSON est un bien commun global format pour envoyer de la croix-plate-forme de données.

drawChart(600/50, JSON.parse('<?php echo json_encode($day); ?>'), JSON.parse('<?php echo json_encode($week); ?>'), JSON.parse('<?php echo json_encode($month); ?>'), JSON.parse('<?php echo json_encode(createDatesArray(cal_days_in_month(CAL_GREGORIAN, date('m',strtotime('-1 day')), date('Y',strtotime('-1 day'))))); ?>'))

C'est la réponse à votre question. La réponse peut paraître très complexe. Vous pouvez voir un exemple simple de décrire la communication entre le côté serveur et côté client ici

$employee = array(
 "employee_id" => 10011,
   "Name" => "Nathan",
   "Skills" =>
    array(
           "analyzing",
           "documentation" =>
            array(
              "desktop",
                "mobile"
             )
        )
);

La Conversion au format JSON est nécessaire pour envoyer les données à l'application cliente ie, JavaScript. PHP dispose d'une fonction intégrée json_encode(), qui peut convertir les données au format JSON. La sortie de la fonction json_encode sera une chaîne comme celle-ci.

{
    "employee_id": 10011,
    "Name": "Nathan",
    "Skills": {
        "0": "analyzing",
        "documentation": [
            "desktop",
            "mobile"
        ]
    }
}

Sur le côté client, le succès fonction sera d'obtenir la chaîne JSON. Javascript ont également JSON l'analyse de la fonction JSON.parse() qui permet de convertir la chaîne de retour à l'objet JSON.

$.ajax({
        type: 'POST',
        headers: {
            "cache-control": "no-cache"
        },
        url: "employee.php",
        async: false,
        cache: false,
        data: {
            employee_id: 10011
        },
        success: function (jsonString) {
            var employeeData = JSON.parse(jsonString); // employeeData variable contains employee array.
    });

9voto

Chirayu Points 631

Dans l'exemple suivant, vous avez un tableau PHP, puis créez d'abord un tableau JavaScript à l'aide d'un tableau PHP:

 <script type="javascript">
    day = new Array(<?php echo implode(',', $day); ?>);
    week = new Array(<?php echo implode(',',$week); ?>);
    month = new Array(<?php echo implode(',',$month); ?>);

    <!--  Then pass it to the JavaScript function:   -->

    drawChart(<?php echo count($day); ?>, day, week, month);
</script>
 

-10voto

Sathish Ravepati Points 523
 example('<?=$phpvar1?>','<?=$phpvar2?>' );

<script>
function example(val,val2){
     //code
} 
</script>
 

essaye ça ??

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X