`
zengshaotao
  • 浏览: 752654 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JQuery json

 
阅读更多

假定服务器返回的是JSON形式的字符串的形式如下:
var data="
{
root:
[
{name:'1',value:'0'},
{name:'6101',value:'上饶市'},
{name:'6102',value:'南昌市'},
]
}";

 

1.如果jquery异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理:

var dataObj=eval("("+data+")");//转换为json对象
alert(dataObj.root.length);//输出root的子对象数量
$.each(dataObj.root,fucntion(idx,item){
if(idx==0){
return true;
}

//输出每个root子对象的名称和值
alert("name:"+item.name+",value:"+item.value);
})

注:对于一般的js生成json对象,只需要将$.each()方法替换为for语句即可,其他不变。

 

2.如果jquery异步请求将type设为“json”,或者利用$.getJSON()方法获得服务器返回,那么就不需要eval()方法了,因为这时候得到的结果已经是json对象了,只需直接调用该对象即可,这里以$.getJSON方法为例说明数据处理方法:

$.getJSON("actionURI",{param:"test"},function(data){
//此处返回的data已经是json对象
//以下其他操作同第一种情况
$.each(data.root,function(idx,item){
if(idx==0){
return true;//同countinue,返回false同break
}

alert("name:"+item.name+",value:"+item.value);

});
});

对于eval()方法,是动态执行其中字符串(可能是js脚本)的,这样很容易会造成系统的安全问题。所以可以采用一些规避了eval()的第三方客户端脚本库,比如JSON in JavaScript就提供了一个不超过3k的脚本库。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics