繁体   English   中英

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

[英]PHP: How do I can decode a json back into array form in Javascript?

我的 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);这样的建议jQuery.parseJSON(header); , JSON.parse(header); 但我一无所获

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

我希望这有帮助

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 数组一样循环遍历它。

这里的问题是,当您执行 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);

希望这可以帮助;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM