使用Javascript推送到数组后无法使用JSON数据.push方法[重复]

问题描述 投票:1回答:1

将数据存储在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);

我收到以下错误:

未捕获的TypeError:无法读取未定义的属性'Book_ID'

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

console.log(booksList);

I see this response in the console:

javascript jquery arrays json array-push
1个回答
0
投票
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"首先打印时显示更新的列表。

© www.soinside.com 2019 - 2024. All rights reserved.