【问题标题】:Trying to put JSON file into JS array试图将 JSON 文件放入 JS 数组
【发布时间】:2015-04-05 04:37:36
【问题描述】:

我有一个 JSON 文件,其中包含:

[{
  "title": "title you desire",
  "url" : "thisistheurl.com"
},{
  "title": "title you desire",
  "url" : "thisistheurl.com"
},{
  "title": "title you desire",
  "url" : "thisistheurl.com"
}]

我现在正在尝试将这些添加到 JS 数组中,并尝试在我的手机上将它们显示为警报:

$.getJSON('links.json', function (json) {
    var linkList = [];
    $.each(json, function(i, obj) {
        linkList.push([obj.title, obj.url]);
    });
});

$.each( linkList, function( key, value ) {
  alert( value.title + ": " + value.url );
});

但是当我在手机上运行它时,没有显示任何警报。有什么想法我可能做错了吗?

【问题讨论】:

    标签: javascript jquery json cordova jquery-mobile


    【解决方案1】:

    尝试改变

    $.each(JSONObject.results.bindings, function(i, obj) {

    $.each(json, function(i, obj) {

    编辑:另外,您应该在$.getJSON 函数(在其上方)范围之外声明var linkList = []。否则它将在全局范围内未定义。

    编辑 2:哦,更重要的是,$.getJSON 是一个异步函数。发生的事情是您开始加载 .json 文件,然后您的代码继续到警报部分。此时还没有加载,所以数组一直是空的。然后几毫秒后,它会加载 JSON,但为时已晚。将您的 $.each 代码移动到 $.getJSON 回调中。

    【讨论】:

    • 现在发生了一些事情(在您的第二次编辑之后)。现在我收到了 3 个警报,但它们都说“未定义:未定义”。
    • obj.titleobj.url 中删除.value
    • 在这种情况下,在linkList.push上方添加这一行:console.log(obj);。然后检查您的控制台,它将验证 $.getJSON 正在生成什么。
    • 哦,没关系,我应该更仔细地查看您的代码。您正在推送中将数据转换为数组。相反,只需将您的推送线更改为linkList.push(obj);。 (或者,您可以将警报行更改为value[0]value[1]。)
    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 2015-06-30
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多