【问题标题】:Unable to use JSON data after pushing into array with Javascript .push Method [duplicate]使用Javascript .push方法推入数组后无法使用JSON数据[重复]
【发布时间】:2019-03-11 03:54:53
【问题描述】:

在将数组存储在 getJSON 之外的变量中后,我无法从数组中检索值。

我的 JSON 响应是:

[
    {
        "Book_ID": "1",
        "Book_Name": "Computer Architecture",
        "Category": "Computers",
        "Price": "125.60"
    },
    {
        "Book_ID": "2",
        "Book_Name": "Asp.Net 4 Blue Book",
        "Category": "Programming",
        "Price": "56.00"
    },
    {
        "Book_ID": "3",
        "Book_Name": "Popular Science",
        "Category": "Science",
        "Price": "210.40"
    }
]

使用 jQuery $.getJson 函数:

  var booksList = [];
  $.getJSON( "books.json", function( data ) {
    $.each(data, function (index, value) {
     booksList.push(value);
    });
  });

当我尝试获取 BOOK ID 时,

console.log(booksList[0].BOOK_ID);

我收到以下错误

未捕获的类型错误:无法读取未定义的属性“Book_ID”

但是当我记录完整的数组时,

console.log(booksList);

I see this response in the console:

【问题讨论】:

  • 显示你正在做的代码console.log(booksList[0].BOOK_ID);
  • 还有BOOK_IDBook_ID不一样
  • 你可能在getJSON回调之外访问console.log(booksList[0].BOOK_ID);
  • 你可以试试 console.log(data)。我需要查看您的数据
  • 你可以简单地使用 booksList=data 不需要迭代

标签: javascript jquery arrays json array-push


【解决方案1】:
var booksList = [];
$.getJSON( "books.json", function( data ) {
  $.each(data, function (index, value) {
   booksList.push(value);
  });
});

$.getJSON() 立即返回,$.each() 也立即返回,而函数内部的代码仍在单独的线程中执行。之后的代码会立即执行,因此当您尝试从中获取数据时列表不会更新,并且它是空的,因此会出现错误

var booksList = [];
$.getJSON( "books.json", function( data ) {
  $.each(data, function (index, value) {
   booksList.push(value);
   console.log(booksList[0].Book_ID);
  });
});
console.log("hi");

将在"hi" 首先打印时显示更新的列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-15
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多