【问题标题】:rendering JSON data to HTML tables将 JSON 数据呈现到 HTML 表中
【发布时间】:2018-11-08 20:10:05
【问题描述】:

我正在尝试将一个巨大的 json 文件放入 HTML 表中。但我不断收到Uncaught TypeError: v.forEach is not a function 错误。我做错了什么?

我的 JSON:

{
"data": {
    "goog": {
        "calls": [
            {
                "bv": {
                    "fatal": [
                        "xyz"
                    ],
                    "notice": [
                        "v35",
                        "abc"
                    ],
                    "syntax": [],
                    "warning": [
                        "pto"
                    ]
                },
                "data": {
                    "lmc": "9",
                    "aid": "a103",
                    "as": "2"
                },
                "result": {
                    "fatal": [
                        "theFatal"
                    ],
                    "notice": [
                        "notice1",
                        "notice2"
                    ],
                    "syntax": [],
                    "warning": [
                        "warning1"
                    ]
                },
                "url": "https://www.google.com",
                "validated": false,
                "vendor": "AA"
            }, 
            "data": {
    "goog": {
        "calls": [
            {
                "bv": {
                    "fatal": [
                        "xyz"
                    ],
                    "notice": [
                        "v35",
                        "abc"
                    ],
                    "syntax": [],
                    "warning": [
                        "pto"
                    ]
                },
                "data": {
                    "lmc": "9",
                    "aid": "a103",
                    "as": "2"
                },
                "result": {
                    "fatal": [
                        "theFatal"
                    ],
                    "notice": [
                        "notice1",
                        "notice2"
                    ],
                    "syntax": [],
                    "warning": [
                        "warning1"
                    ]
                },
                "url": "https://www.google.com",
                "validated": false,
                "vendor": "AA"
            }
    }

我的代码:

let api_url = `api?ar=${run_id}`;
console.log(api_url);

$.getJSON(api_url, function(data) {
  console.log(data);

  Object.values(data).forEach(d => {
    console.log(d);
    $.each(d.goog, function(k,v) {
      v.forEach((x,y) => {
        console.log(x);
      });
    });
  });

现在我只是想在控制台中查看我的很多数据。我需要在表格中获取所有这些数据。还有另一种简单的方法吗?我错过了什么。

目前我的代码正在返回值,但也给了我Uncaught TypeError: v.forEach is not a function 错误。

【问题讨论】:

    标签: javascript jquery html json foreach


    【解决方案1】:

    最后,通过您的最后评论,我设法理解了我从一开始就假设的内容。

    您的问题是最后一个值不是数组,而是一个对象,因此它没有 forEach 方法(如错误所述)

    这是显示错误之前的最后一个值。你可以清楚的看到它是一个对象:

    { "fatal":14,"notice":14,"syntax":0,"warning":2 }

    您可以通过检查是否是这样的数组来解决您的问题:

    Object.values(data).forEach(d => {
        console.log(d);
        $.each(d.goog, function(k, v) {
            if(Array.isArray(v) { // <--- HERE checks if value is an array.
                v.forEach((x, y) => {
                    console.log(x);
                });
            }
        });
    });
    

    这样可以避免对非数组值调用 forEach。

    【讨论】:

    • 我有没有告诉过你,你是我最喜欢的 JavaScript 人?我向你鞠躬!
    • @newbierp 这与 jQuery 无关。我建议你根本不要使用 jQuery。 JavaScript 已经发展了很多。
    • 知道了。我改变了我的评论!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 2020-12-19
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    相关资源
    最近更新 更多