获取动态返回的变量值或对象属性

49 篇文章 2 订阅
44 篇文章 0 订阅

 1.对于服务器返回的JSON字符串,如果jQuery异步请求没做类型说明,或者以字符串方式接受,则需要做一次对象化处理,将该字符串放于eval()中执行一次。这种方式也适合以普通javascipt方式获取json对象。

var u = eval('('+user+')');
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]

 2.对于服务器返回的JSON字符串,如果jquery异步请求将type(一般为这个配置属性)设为“json”,或者利用$.getJSON()方法获得服务器返回,就不需要eval()方法了,这时候得到的结果已经是json对象了,只需直接调用该对象即可。

$.getJSON("http://www.qk12333.com/",{param:"jcuckoo"},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); 
    }); 

});

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

第二种解析方式就是使用Function对象来完成,它的典型应用就是在JQUERY中的AJAX方法下的success等对于返回数据data的解析

var json='{"name":"userName","age":28}';
data =(new Function("","return "+json))();

此时的data就是一个会解析成一个 json对象了

var code1='"a" + 2'; //表达式 
var code2='{a:2}'; //语句 
alert(eval(code1)); //->'a2' 
alert(eval(code2)); //->undefined 
alert(eval('(' + code2 + ')')); //->[object Object] 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值