background image

<a

 

href="javascript:show('<?php

 

echo 

urlencode(json_encode(array('k'=>array('1','2','3'))));?>')"   id="aj"> 访 问
json</a>
function show(str){
var jobj=eval('('+decodeURI(str)+')');
alert(jobj.k[1]);
}
这里我们使用的是
jobj.k[1]这样的方式,大家一定已经发现了,只要数组中含有键名,当数组被转化为
json 格式后,就要使用
json 对象.键名
这样的方式来访问该键下的元素,上面的例子中,k 键下的数组元素是数字索引,所以
在 json 中使用 k[1]这样的方式来访问。
下面,我们对数组的第一维和第二维都添加键名:
<a

 

href="javascript:show('<?php

 

echo 

urlencode(json_encode(array('k'=>array("a"=>'1','2','3'))));?>')" id="aj">访问
json</a>
function show(str){
var jobj=eval('('+decodeURI(str)+')');
alert(jobj.k.a);
}
正如上面所提到的,只要含有键名,就必须以
json 对象.键名
的方式来访问,如果有多个键就要用
json 对象.键名.键名...
,不要问我为什么,这就是 json 的访问方式,只有 javascript 的发明者能向你解释,他
为什么要这样规定。
结论:
1、将 php 中的数组转化为 json 字符串传递给 js 时。如果数组没有指定键名,那么可以直
接使用 js 的 eval 方法将其转化为 json 格式供 js 处理;如果数组中含有键名,那么在使
用 eval 方法处理时,需要使用
()
将 json 字符串括起来。
2、如果数组中含有键名,转化为 json 字符串后,在 js 中要用
json 对象.键名.键名...
的方式来访问,如果是数字索引则用
json 对象[1]
或者
json 对象.键名[1]
这样的方式。
上面,我们主要讨论了,在 PHP 向 js 传递 json 字符串时,需要注意的事项。下面我们再
来讨论,用 js 向 php 传递 json 字符串时需要如何处理。
聪明的你肯定已经知道了,只要将 json 数据用引号引起来作为字符串传递给 PHP【通常
用 ajax 进行】就可以用 json_decode 函数解码了。没错!就是这样!但是在构造 json 字