我正在尝试使用JSON编码器将PHP多维数组转换为javascript数组。当我执行var_dump时,我的php数组看起来像这样:
array (size=2)
'Key' => string 'a' (length=1)
'Value' => string 'asite.com' (length=9)
这是我目前在视图中使用的代码,试图将其转换为JavaScript数组:
var tempArray = $.parseJSON(<?php echo json_encode($php_array); ?>);
每当我在浏览器中运行此代码时,控制台中的转换输出为:
var tempArray = $.parseJSON([{"Key":"a","Value":"asite.com"}]);
这是javascript多维数组的正确结构吗?我问,因为它一直在上面的行上给我这个错误:
SyntaxError: Unexpected token o
答案 0 :(得分:8)
您不必调用parseJSON,因为json_decode的输出是javascript文字。只需将其分配给变量即可。
var tempArray = <?php echo json_encode($php_array); ?>;
您应该可以访问属性
alert(tempArray[0].Key);
答案 1 :(得分:5)
这对我有用。
<script type='text/javascript'>
<?php
$php_array = array(
array("casa1", "abc", "123"),
array("casa2", "def", "456"),
array("casa3", "ghi", "789" )
);
$js_array = json_encode($php_array);
echo "var casas = ". $js_array . ";\n";
?>
alert(casas[0][1]);
</script>
答案 2 :(得分:0)
不要使用parseJSON,这是一个字符串。 只是做:
<?php
$php_array = array ('Key'=>'a', 'Value'=>'asite.com');
?>
<html>
<head>
<script type="text/javascript">
var tempArray = <?php echo json_encode($php_array); ?>;
console.log(tempArray);
</script>
</head>
<body>
</body>
</html>
这让我在控制台中:
Object { Key="a", Value="asite.com"}
答案 3 :(得分:-1)
只需在js函数中添加单引号,例如
var tempArray = $.parseJSON('<?php echo json_encode($php_array); ?>');