使用eval后“undefined”

时间:2014-02-06 13:12:28

标签: javascript json

我从后端服务获取此JSON对象。

[{"date":"2014-02-06","fontSize":14,"bgColor":"#000000","fontType":"Arial","userId":1012}]

我想检索json对象中的元素,并能够在我的代码中使用它。但是在使用eval函数后我得到了undefined 例如:var date_time = data.date_time;
在这里,我undefined获得了data.date_time 我尝试过以下的东西。但我得到了undefined。请给出解决方案帮助:)  我已附上以下代码。我是javascript / json的初学者。如果问题是该死的白痴sry;) 代码:

 var getUsersettings= "userId="+userId+"&sessionId="+sessionId; 
                     $.ajax({
                         type:"POST",
                         url: fetchUserSettings,
                         async: false,
                         cache: false,
                         dataType: "json",
                         data: getUsersettings,             
                         error : function(data) {
                             console.log("settings lost while fetching !!!!!");
                         },
                         success : function(data) {
                             console.log("settings fetched !!!!!");
                             if(data != undefined && data.length > 0){
                             console.log(data);
                        //   var obj = JSON.parse(data);
                             var obj = JSON.stringify(data);
                             console.log(obj);
                        //   obj = jQuery.parseJSON(obj);
                        /*   var data =eval('(' +data + ')');
                             console.log(data);
                            */  
                             data = eval('('+obj+')');
                             console.log("obj : "+data);
                             var date_time = data.date_time;
                             var font_size = data.fontSize;
                             var bg_Color = data.bgColor;
                             var font_type = data.fontType;
                             data.userId;
                            // console.log("---"+date_time+"-------"+font_size+"------"+bg_Color+"----"+font_type+"------"+data.userId);
                             }
                             else{
                                 console.log("no data abt fetching");
                             }

                         },
                         complete: function(xhr, textStatus) {
                             console.log("Status Code: " + xhr.status);
                         }
                     });

1 个答案:

答案 0 :(得分:0)

所以

我对你在代码中所做的事情感到有点困惑。

但jQuery ajax正在将已解析的json作为plainobject返回。

我认为你错过的是,你的plainobject(json)的第一级是一个数组。 首先,您必须使用

访问第一个数组项
data[0]
之后,其余部分真的很容易。

示例:http://jsfiddle.net/Valtos/4x44n/