在Javascript循环中显示JSON数据

时间:2015-06-29 14:02:04

标签: javascript json

我在显示json数据时遇到问题。我搜索并发现了许多例子,但由于某种原因,我得到了"无法读取属性'长度'未定义"错误,因为" var object = notes.data;"回复未定义。

为什么对象未定义?从我能看到的一切来看,我做得对。

返回我的json。

{  
   "data":[  
      {  
         "NumberOfAnswers":25,
         "Answer":"51-89 Percent of all items in section are <b>IN STOCK<\/b>",
         "Percent":54.35
      },
      {  
         "NumberOfAnswers":21,
         "Answer":"90-100 Percent of all items in section are <b>IN STOCK<\/b>",
         "Percent":45.65
      }
   ]
}

以下是显示它的功能。 (还有一些调试代码)

 function format(notes) {
     console.log(notes); //this displays the json
     var object = notes.data;
     console.log(object);
     var i;
     for (var i = 0; i < object.length; i++) {
         var Result = object[i];
         var Answer = Result.Answer;
         console.log(Answer)
     }

  }

这是ajax函数:

 $.ajax({
     type: 'post',
     url: '/rmsicorp/clientsite/pacingModal/surveyajax2.php',
     success: function(result) {
         if (row.child.isShown()) {
             row.child.hide();
             tr.removeClass('shown');
             detailsrows.splice(RowID, 1);
         } else {
             row.child(format(result)).show();
             tr.addClass('shown');
             if (RowID === -1) {
                 detailsrows.push(tr.attr('id'));
             }

         }
     }
 });

1 个答案:

答案 0 :(得分:0)

最有可能的是,响应仍然是字符串格式。您可以添加JSON.parse将其转换为对象,然后也可以访问data属性。

尝试像这样修改你的功能,看看它是否解决了这个问题。

function format(notes) {
   console.log(notes); //this displays the json
   // The following converts the response to a javascript object
   // and catches the exception if the response is not valid JSON
   try {
      notes = JSON.parse(notes);
   } catch(e) {
      console.log('notes is not valid JSON: ' + e);
   }
   var object = notes.data;
   console.log(object);
   var i;
   for (var i = 0; i < object.length; i++) {
      var Result = object[i];
      var Answer = Result.Answer;
      console.log(Answer)
   }
}