background image

alert(jobj.a); 

 
再试试吧!怎么样,可以访问了吧。这告诉我们,在使用

eval

方法处理带有键名的 json 字

符串时,需要在字符串两端加速括号。至于为什么,站长也不知道,站在巨人的肩膀上而

 

已。
这里要注意,尽管 PHP 生成的 json

 

字符串

{"a":"1","b":"2","c":"3"}被传递给 js 后无法被直接解释为 json 格式,但是如果你在 js 中使
用该字符串直接创建 json

 

数据,是可以的。试试下面的代码吧:

代码如下:
 

var

 jobj={"a":"1","b":"2","c":"3"}; 

alert(jobj.b); 
 
2

 

、二维数组

二维数组在 PHP 用的应用非常广泛,因此了解二维数组转化后的 json 格式非常重要。有

 

了上面的例子做铺垫,下面站长就直接给出示例代码:
代码如下:
 
<a href="javascript:show('<?php echo urlencode(json_encode(array(array('1','2','3'))));?>')" 
id="aj">访问 json</a> 

function

 show(str){ 

var

 jobj=eval_r(decodeURI(str)); 

alert(jobj[0][0]); 

 
大家运行,会发现,这跟一维数组差不多,这是不带键名的例子,因此在 show 函数中,

 

去掉字符串两端的括号也是可以的。
下面,我们对二维数组进行一下变化,在第二维中加入键名,

 

请看示例代码:

代码如下:
 
<a href="javascript:show('<?php echo 
urlencode(json_encode(array(array("a"=>'1',"b"=>'2','3'))));?>')" id="aj">访问 json</a> 

function

 show(str){ 

var

 jobj=eval_r('('+decodeURI(str)+')'); 

alert(jobj[0].a); 

 
大家运行代码后,发现,这里我们访问 json

 

数据的方式有点不一样。上面我们用的是

alert(jobj[0][0]); 

 

而这里我们用的是