function
show(str){
var
jobj=eval_r(decodeURI(str));
alert(jobj[2]);
}
大家自己试一试就会发现,是的,可以用 js 中访问一维数组的方式来访问它。
eval
方法将
json 字符串解释为 json 对象,因为传递过来的是字符串,不转化的话,你得到将是字符
串中第三个字符的值。
我们再来对这个一维数组做一下变化,我们发现上面的一维数组没有指定索引,所以它
默认为数字索引,现在我们来给它加上键名:
考虑 php
数组
代码如下:
$array
=
array
('a'=>'1','b'=>'2','c'=>'3');
使用 json_encode 函数转化后,对应的 json
字符串为
代码如下:
{"a":"1","b":"2","c":"3"}
。
我们很快就发现了其中的不同,最明显的就是字符串两端的[]变成了{},那么这个字符串
是否也可以按上面那样处理后被 js
访问呢?我们不防试一试:
代码如下:
<a href="javascript:show('<?php echo urlencode(json_encode(array('a'=>'1','b'=>'2','c'=>'3')));?
>')" id="aj">访问 json</a>
function
show(str){
var
jobj=eval_r(decodeURI(str));
alert(jobj.a);
}
大家如果动手试了就知道,点击链接后,没有出现弹窗。为什么呢?是 PHP 生成的 json
字符串格式不对吗?不是的,这是我们在使用
eval
函数解释的时候,出错了。把上面的函
数代码换成:
代码如下:
function
show(str){
var
jobj=eval_r('('+decodeURI(str)+')');