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

标签 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 方法。我确信这与我的 for 语句有关,但一切似乎都是正确的。我已向其他人寻求帮助,但他们按预期获得了阵列(第二张截图),没有出现任何问题。 我正在运行适用于 OS X 1.8.3-4 的 XAMPP MacBook Pro(视网膜显示屏,13 英寸,2013 年末) OSX 埃尔卡皮坦 10.11.4 Chrome、Firefox 和 Safari 中也会出现同样的错误。

可能是什么问题?这尤其奇怪,因为其他计算机上的相同文件似乎可以工作,除非还有另一个未考虑到的变量。

最佳答案

避免对列表/数组使用 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);
});

关于JavaScript/jQuery JSON 数组问题 - 值未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37103700/

相关文章:

javascript - 如何减少第一个字节的时间

javascript - JQuery 数据表对前一列进行排序

javascript - 使用 jQuery 选择子文本

Javascript 从函数访问对象变量

arrays - 删除数组——有必要吗?

javascript - 从数组 lodash 中删除项目

javascript - 在 jQuery 中保存临时 Ajax 参数

javascript - 使用 Javascript 计算圆的周长和面积 - 函数不起作用

javascript - Google 条形图最大条形宽度

java - 使用非空方法打印一系列问题的摘要