为了账号安全,请及时绑定邮箱和手机立即绑定

将PHP数组传递给JavaScript函数

将PHP数组传递给JavaScript函数

白猪掌柜的 2019-07-05 14:30:42
将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数组的值。我该如何解决这个问题?
查看完整描述

3 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

使用杰森.

在下面的示例中$php_variable可以是任何PHP变量。

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

在您的代码中,您可以使用如下代码:

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

在需要解析JSON-String对象的情况下(如Ajax请求),安全的方法是使用JSON.parse(..)如下所示:

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


查看完整回答
反对 回复 2019-07-05
?
侃侃无极

TA贡献2051条经验 获得超10个赞

可以使用以下方法将PHP数组传递给JavaScriptjson_encodePHP函数。

<?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<jArray.length; i++){
        alert(jArray[i]);
    }

 </script>


查看完整回答
反对 回复 2019-07-05
?
互换的青春

TA贡献1797条经验 获得超6个赞

两个平台之间的数据传输需要一种通用的数据格式。JSON是一种通用的全局格式,用于发送跨平台数据。

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'))))); ?>'))

这就是你问题的答案。答案可能看起来非常复杂。您可以看到一个简单的示例,描述服务器端和客户端之间的通信。这里

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

将数据发送回客户端应用程序(即JavaScript)需要转换为JSON格式。PHP有一个内置函数json_encode(),它可以将任何数据转换为JSON格式。json_encode函数的输出将是如下所示的字符串。

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

在客户端,成功函数将获得JSON字符串。JavaScript还有JSON解析函数,它可以将字符串转换回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.
    });


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 826 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信