js中的php json_encode返回不需要的结果

时间:2015-07-15 07:31:38

标签: javascript php json

我试图将数组从php传递给JavaScript。但是在js中,数组值被读取为每个单独的char。 我的代码;

<?php
$arr=array(1=>'apple', 2=>'ball');
$garr=json_encode($arr);
?>

<script>
var ax = '<?php echo $garr; ?>';
alert(ax.length);
for(var n=0;n<ax.length; n++)alert(ax[n]);
</script>

结果是lenght = 23并且每个char都作为输出。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

php数组的json_encode()输出为

{"1":"apple","2":"ball"}

这是一个对象文字。但是你想要一个阵列。尝试使用:

$arr=array(0=>'apple', 1=>'ball');

并删除单引号,它们标记字符串文字,并且您不希望ax是字符串而是数组/对象。

var ax = <?php echo $garr; ?>;

答案 1 :(得分:0)

你只是打印一个JSON字符串,这样ax就只不过是一个字符串了。

使用解析器,请参阅here

var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);

如果您正在使用JQuery,请使用this

jQuery.parseJSON( jsonString );