jquery - 成功 getJSON 操作后 data.length 未定义

标签 jquery json each

我正在使用 getJSON 中的 JSON 数据填充下拉列表。

填充工作正常,但尝试通过与 data.length 进行比较来确定填充已完成,但无法正常工作,因为 data.length未定义 我不明白为什么!

数据如下:

{
    "1": {
        "id": "1",
        "name": "Plymouth"
    },
    "2": {
        "id": "2",
        "name": "Torquay"
    }
}

我的代码如下:

$('.locationList').empty();
$('.locationList').append('<option value="">Select...</option>');
$.getJSON('/Settings/locations.txt', function (data) {
    var dataNum = data.length;
    var counter = 1;
    $.each(data, function (i, item) {
        $('.locationList').append('<option value="' + data[i].id + '">' + data[i].name + '</option>');
        if (counter >= dataNum) {
            $('#bookTo').val(locationID + 1);
            $('#transferFrom').val(locationID);
        };
        counter++;
    });
});

本节:

if (counter >= dataNum) {
    $('#bookTo').val(locationID + 1);
    $('#transferFrom').val(locationID);
};
counter++;

旨在让我在 $.each 循环完成后预设下拉框的值(这适用于其他列表),但它没有发生。

当我运行alert(data.length)时,我得到undefined,这没有任何意义,因为data显然有一个长度 以便它通过 $.each 正确填充下拉框,它确实做到了!

编辑:抱歉,应该添加,变量 locationID 是在脚本的前面通过 Cookie 声明的并且是有效的

最佳答案

这是一个对象:

data = {
    "1": {
        "id": "1",
        "name": "Plymouth"
    },
    "2": {
        "id": "2",
        "name": "Torquay"
    }
}

并且它没有 length 属性。

请参阅:仅属性 12

您确定希望将其作为对象评估器然后作为数组吗:

data = [
    {
        "id": "1",
        "name": "Plymouth"
    },
    {
        "id": "2",
        "name": "Torquay"
    }
]

然后您就有了 length 属性和许多其他 native 数组方法,例如 sort。您可以像这样访问您的数据:

data[0]

女巫等于:

{
    "id": "1",
    "name": "Plymouth"
}

关于jquery - 成功 getJSON 操作后 data.length 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9428190/

相关文章:

javascript - 如何向 promise 链添加另一个并行 AJAX 调用

java - 使用 Jackson 反序列化 JSON 时出现问题

java - 如何在 Java 中检索特定的 Json 元素

javascript - 如何操作JSON数据?

javascript - 使用 jQuery 循环遍历元素

jquery - jqXHR.abort 不是函数

javascript - 如何查找特定事件上执行的函数名称

jquery - 使用 .each() 迭代 HTML5 <figure> 和 <figcaption> 的选择

javascript - jQuery 总是追加所选项目两次?

javascript - 如何保存输入复选框值的存储数组?