background image

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)+')');