【问题标题】:reading nested JSON via AJAX with jquery or javascript and outputting to tables [duplicate]使用 jquery 或 javascript 通过 AJAX 读取嵌套 JSON 并输出到表 [重复]
【发布时间】:2012-10-22 21:35:19
【问题描述】:

可能重复:
jquery reading nested json

我真的很想有一个快速的方法来循环遍历 JSON 中的多个记录,每个记录都有潜在的深度嵌套。我只是想输出到一个表。

我不确定 $.each() 或 $.ajax() 成功的 javascript 方法需要通过 function() 传递哪些参数。所有示例似乎都使用通用词“数据”或“obj”,但这些让我感到困惑 - 它们是内置函数参数还是我可以随意命名它们:

$.each(foo, function(bar){

});

我如何跟踪我在循环/嵌套中的位置?

我更喜欢使用 JQuery,但我也应该知道这样做的直接 JavaScript 方法。而且我还想知道是否可以不用一百行代码。

以这个 JSON 为例:

{
  date: " 2012-10-18 16:58:35.104576",
  data: [{
    title: "The Princess Bride",
    rating: "PG",
    length: 128,
    stars: [
      "Gary Elwes",
      "Robin Wright",
      "Christopher Guest"
    ]

  }, {
    title: "This is Spinal Tap",
    rating: "R",
    length: 105,
    stars: [
      "Christopher Guest",
      "Michael McKean",
      "Harry Shearer"
    ]
  }]
}

我找不到任何包含嵌套 JSON 的有用示例,即使在 StackOverflow 中也是如此。

循环遍历每个元素并将其分配给表格单元格的最有效方法是什么? HTML 输出并不重要 - 我知道如何制作表格...如何获得“星星”?

当我使用 Chrome 控制台并简单地使用 $.getJSON('/example'); 时,我会在 responseText 中返回整个 JSON,以 "{"date":"2012-10-18 ,"data": [{"title": "The Princess Bride", 开头但是在 JSON 文档、$.getJSON 上的 JQuery 文档和任何 JavaScript 示例中都不能我找到了对responseText 的引用。所以,我迷路了。 $.getJSON 需要什么参数来对象化 responseText?

【问题讨论】:

  • 关于您的最后一条评论,您需要对其进行解析。试试var myData = JSON.parse(responseText); 您可能会发现将其输出到控制台也很有帮助:console.log(myData) 然后您可以执行var someStars = myData.data[0].stars; 之类的操作,如果您对循环数据有任何疑问,请告诉我。

标签: javascript jquery ajax json


【解决方案1】:

试试

obj.data[0].stars      // Will get you the stars in the 1st Object

obj.data[0].stars[0]   // Gary Elwes

FIDDLE

要遍历 Stars 对象你可以试试这个

$.each(obj.data , function(key , value){ // First Level
    $.each(value.stars , function(k , v ){  // The contents inside stars
        console.log(v)
    });        

});

UPDATED FIDDLE

编辑

 $.ajax({
      // Parameters 

      success : function(obj){
            $.each(obj.data , function(key , value){ // First Level
                 $.each(value.stars , function(k , v ){  // The contents inside stars
                     console.log(v)
                 });     
            });
      }
  });

【讨论】:

  • 如果 JSON 通过 AJAX 进来怎么办?如何通过 AJAX 分配 var obj?
  • 检查已编辑的帖子。您的对象将在您的 Ajax 请求的回调中
  • 当我这样做时:` $.ajax({ url:'/example', dataType:'json', success: function(obj){ $.each(obj.data, function(key, value){ $.each(value.stars, function(k,v){ alert(v); }); }); } }); ` 我得到Uncaught TypeError: Cannot read property 'length' of undefined 我希望我能弄清楚如何自己调试,但我做错了什么?
  • 检查控制台部分是否有任何错误.. 控制台中显示的请求和响应是什么.. 还为您的 ajax 请求设置类型:'POST'
  • 检查请求和响应数据...也尝试评论您的循环并尝试 console.log(obj) .. 你看到了什么??
猜你喜欢
  • 2019-07-09
  • 2019-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多