JSON值在javascript中解析为未定义[重复]

Posted

技术标签:

【中文标题】JSON值在javascript中解析为未定义[重复]【英文标题】:JSON values parsed as undefined in javascript [duplicate] 【发布时间】:2013-05-30 11:30:15 【问题描述】:

我正在尝试用 javascript 解析 JSON。 JSON 被创建为 ajax 响应:

$.ajax(url, 
  dataType: "text",
  success: function(rawData, status, xhr) 
    var data;
    try 
      data = $.parseJSON(rawData);
      var counter = data.counter;
      for(var i=1; i<=counter; i++)
        //since the number of 'testPath' elements in the JSON depend on the 'counter' variable, I am parsing it in this way
        //counter has the correct integer value and loops runs fine
        var currCounter = 'testPath'+i ;
        alert(data.currCounter); // everything alerts as undefined
      
     catch(err) 
      alert(err);
    
  ,
  error: function(xhr, status, err) 
    alert(err);
  
);

但所有值都将“未定义”作为值警报(除了给出正确值的“计数器”)在萤火虫中看到的实际字符串如下:

"testPath1":"ab/csd/sasa", "testPath2":"asa/fdfd/ghfgfg", "testPath3":"ssdsd/sdsd/sds", "counter":3

【问题讨论】:

为什么不使用dataType 作为JSON 并以JSON 而不是text 发送响应?? 您检查过您的 Javascript 控制台是否有错误? 【参考方案1】:

使用

alert(data[currCounter]); 

相反。您不能像以前那样访问属性......

【讨论】:

【参考方案2】:

试试 data[currCounter],因为 data.currCount 中没有值。

【讨论】:

【参考方案3】:

需要使用[]表示法

data[currCounter]

【讨论】:

【参考方案4】:

alert(data[currCounter]) ,这将起作用。

data.currCounter 在对象中查找键“currCounter”,而不是通过 currCounter 的值。

示例:

http://jsfiddle.net/bJeWm/1/

var myObj =  'name':'dhruv','age':28 ;
var theKey = 'age';
alert(myObj.theKey);  // undefined
alert(myObj[theKey]); // 28

【讨论】:

谢谢@DhruvPathak .. 它只是通过使用 [] 而不是 "." 来工作

以上是关于JSON值在javascript中解析为未定义[重复]的主要内容,如果未能解决你的问题,请参考以下文章

app:layout_constraint 值在 xml 源视图中始终显示为未定义 - Android Studio 3.2

为啥从 json 操作中检索到的数据显示为未定义?

JSON 构造函数显示为未定义

Mongoose/MongoDB 结果字段在 Javascript 中显示为未定义

Mongoose/MongoDB 结果字段在 Javascript 中显示为未定义

NodeJS JSON 文件的属性在编辑属性后重置为未定义