PHP:如何在Javascript中将json解码为数组形式?

时间:2017-01-27 08:24:37

标签: javascript php arrays json decode

我的PHP中有一个名为$tempoHeader的数组,例如:

示例数组$ tempoHeader

-------
Array
(
   [0] => red
   [1] => green
   [2] => yellow
   [3] => blue
)

我想将它发送到我的外部 javascript ,所以我在 php代码中执行此操作:

我的PHP:header.php

$tempoHeader = array_diff_assoc($modelData, $data);
<script type="text/javascript">var header = <?php echo json_encode($tempoHeader); ?>;</script>
<script type="text/javascript" src="upload_header.js"></script>

在我的 javascript 中,我尝试console.log(header);并在控制台中获取此内容

Array [ "red", "green", "yellow", "blue" ]

我的JS:upload_header.js

$(window).load(function() {
console.log(header);                    //this work and print out the header json
   var myObject = JSON.parse(header);
   var myArray = jQuery.parseJSON(header);
   console.log(myArray);                   //didn't print out anything
   console.log(myObject);                  //didn't print out anything
});

如何将这个json解码为$ tempoHeader数组形式?

注意: 我已经阅读了这个问题jQuery JSON Decode ( PHP to Javascript),并且我尝试了jQuery.parseJSON(header);JSON.parse(header);之类的建议,但我什么也没得到

3 个答案:

答案 0 :(得分:1)

$res = json_decode( $tempoHeader, true );
echo $res->array_name[index];

我希望这个帮助

答案 1 :(得分:0)

header已经是一个数组,它不是json /一个字符串,你不需要解析它。

你发送给javascript:

var header = <?php echo json_encode($tempoHeader); ?>;    

所以你已经注意到了javascript中的数组:

Array [ "red", "green", "yellow", "blue" ]

然后你尝试将其解析为json:

var myObject = JSON.parse(header);

这是不可能的,也不是必要的:json是一个字符串,JSON.parse()期望一个字符串作为其参数。你不能在阵列上使用它。

要使用您的变量,您只需使用header[0](红色)等,或像使用任何其他javascript数组一样循环遍历它。

答案 2 :(得分:0)

问题在于,当您执行JavaScript时,您的PHP脚本已经执行,要“将变量发送回php”,您必须创建一个新的请求。

大部分是通过Ajax完成的,或者你可以在隐藏的输入字段中添加你的数组并用表格“发送”它。

所以你upload_header.js看起来像

   $(function () {

        $.ajax('update_header.php', {
            method: 'POST',
            data: {
                'header': JSON.stringify(header)
            }
        })
    });

并在“update_header.php”中,您将收到带

的新标题
$newHeader = json_decode($_POST['header'],true);

希望这会有所帮助;)