![](/img/trans.png)
[英]create JSON form an array with PHP and decode it with javascript
[英]PHP: How do I can decode a json back into array form in Javascript?
我的 php 中有一个名为$tempoHeader
,例如:
-------
Array
(
[0] => red
[1] => green
[2] => yellow
[3] => blue
)
我想将它发送到我的外部javascript 中,所以我在我的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" ]
$(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
});
注意:我已经阅读了这个问题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.