这个问题在这里已有答案:
将数据存储在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);
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"
首先打印时显示更新的列表。