JavaScript / jQuery JSON数组问题 - 未定义的值

时间:2016-05-08 19:01:09

标签: javascript jquery arrays json ajax

我从JSON文件中提取数据:

[
{
    "video": "video/preroll"
},
{
    "video": "video/areyoupopular"
},
{
    "video": "video/destinationearth"
}]

我已经尝试过各个阶段的console.log,在我到达下面的舞台之前没有问题。我需要JSON字符串中每个视频的值,并将它们放入标记为播放列表的数组中。我使用的代码是:

$(function() {
    var playlist = [];

    var url = "http://localhost/class_files2/week7.1/video-data.json";

    $.get(url, function(data) {
       // console.log(data); at this point returns the JSON string as expected.
       for (var i=0; i<data.length; i++) {
           playlist.push(data[i].video);
       } 
        console.log(playlist);
    });
});

数组显示,但有几个未定义的值(见截图)。 array error

我应该将视频值放入播放列表数组中。我已经从使用我的相同文件按预期将值推入播放列表数组的其他人那里得到了帮助。

如果我在推入数组之前放入console.log,我会得到JSON字符串,但它会运行156次(见截图)。 array 156

我尝试过创建新文件并重新输入(不是复制和粘贴)。我尝试使用完整的AJAX GET方法。我确定它与我的陈述有关,但一切似乎都是正确的。我已经向其他人伸出援助之手,但他们正在按预期获得阵列(第二次截图)而没有问题。 我正在为OS X 1.8.3-4运行XAMPP MacBook Pro(Retina,13英寸,2013年末) OSX El Capitan 10.11.4 Chrome,Firefox和Safari中也会出现同样的错误。

可能是什么问题?它特别奇怪,因为其他计算机上的相同文件似乎有效,除非另外一个变量没有被考虑在内。

1 个答案:

答案 0 :(得分:1)

避免对列表/数组使用for循环。使用forEach循环。

试试这个。

$.get(url, function(data) {
   // console.log(data); at this point returns the JSON string as expected.
   data = JSON.parse(data);
   data.forEach(function(item) {
       playlist.push(item.video);
   });
    console.log(playlist);
});