将PHP数组传递给JavaScript函数

将PHP数组传递给JavaScript函数

我正在尝试将PHP数组变量转换为JavaScript变量。

这是我的密码:

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

我无法获得PHP数组的值。

我该如何解决这个问题?


白猪掌柜的
浏览 827回答 3
3回答

慕仙森

使用杰森.在下面的示例中$php_variable可以是任何PHP变量。<script&nbsp;type="text/javascript"> &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;obj&nbsp;=&nbsp;<?php&nbsp;echo&nbsp;json_encode($php_variable);&nbsp;?>;</script>在您的代码中,您可以使用如下代码:drawChart(600/50,&nbsp;<?php&nbsp;echo&nbsp;json_encode($day);&nbsp;?>,&nbsp;...)在需要解析JSON-String对象的情况下(如Ajax请求),安全的方法是使用JSON.parse(..)如下所示:var&nbsp;s&nbsp;=&nbsp;"<JSON-String>";var&nbsp;obj&nbsp;=&nbsp;JSON.parse(s);

侃侃无极

可以使用以下方法将PHP数组传递给JavaScriptjson_encodePHP函数。<?php &nbsp;&nbsp;&nbsp;&nbsp;$phpArray&nbsp;=&nbsp;array( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;=>&nbsp;"Mon",&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;=>&nbsp;"Tue",&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;=>&nbsp;"Wed",&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;=>&nbsp;"Thu", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;=>&nbsp;"Fri",&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;=>&nbsp;"Sat", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;=>&nbsp;"Sun", &nbsp;&nbsp;&nbsp;&nbsp;)?><script&nbsp;type="text/javascript"> &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;jArray&nbsp;=&nbsp;<?php&nbsp;echo&nbsp;json_encode($phpArray);&nbsp;?>; &nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;i=0;&nbsp;i<jArray.length;&nbsp;i++){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(jArray[i]); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</script>

互换的青春

两个平台之间的数据传输需要一种通用的数据格式。JSON是一种通用的全局格式,用于发送跨平台数据。drawChart(600/50,&nbsp;JSON.parse('<?php&nbsp;echo&nbsp;json_encode($day);&nbsp;?>'),&nbsp;JSON.parse('<?php&nbsp;echo&nbsp;json_encode($week);&nbsp;?>'),&nbsp; JSON.parse('<?php&nbsp;echo&nbsp;json_encode($month);&nbsp;?>'), &nbsp;JSON.parse('<?php&nbsp;echo&nbsp;json_encode(createDatesArray(cal_days_in_month(CAL_GREGORIAN,&nbsp;date('m',strtotime('-1&nbsp;day')), &nbsp;&nbsp;date('Y',strtotime('-1&nbsp;day')))));&nbsp;?>'))这就是你问题的答案。答案可能看起来非常复杂。您可以看到一个简单的示例,描述服务器端和客户端之间的通信。这里$employee&nbsp;=&nbsp;array( &nbsp;"employee_id"&nbsp;=>&nbsp;10011, &nbsp;&nbsp;&nbsp;"Name"&nbsp;=>&nbsp;"Nathan", &nbsp;&nbsp;&nbsp;"Skills"&nbsp;=> &nbsp;&nbsp;&nbsp;&nbsp;array( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"analyzing", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"documentation"&nbsp;=> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"desktop", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"mobile" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;));将数据发送回客户端应用程序(即JavaScript)需要转换为JSON格式。PHP有一个内置函数json_encode(),它可以将任何数据转换为JSON格式。json_encode函数的输出将是如下所示的字符串。{ &nbsp;&nbsp;&nbsp;&nbsp;"employee_id":&nbsp;10011, &nbsp;&nbsp;&nbsp;&nbsp;"Name":&nbsp;"Nathan", &nbsp;&nbsp;&nbsp;&nbsp;"Skills":&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"0":&nbsp;"analyzing", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"documentation":&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"desktop", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"mobile" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;] &nbsp;&nbsp;&nbsp;&nbsp;}}在客户端,成功函数将获得JSON字符串。JavaScript还有JSON解析函数,它可以将字符串转换回JSON对象。$.ajax({ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type:&nbsp;'POST', &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;headers:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cache-control":&nbsp;"no-cache" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;"employee.php", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;async:&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cache:&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employee_id:&nbsp;10011 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success:&nbsp;function&nbsp;(jsonString)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;employeeData&nbsp;=&nbsp;JSON.parse(jsonString);&nbsp;//&nbsp;employeeData&nbsp;variable&nbsp;contains&nbsp;employee&nbsp;array. &nbsp;&nbsp;&nbsp;&nbsp;});
打开App,查看更多内容
随时随地看视频慕课网APP