我的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);
,JSON.parse(header);
之类的建议,但我什么也没得到
答案 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);
希望这会有所帮助;)