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]);
而这里我们用的是