无法使用JQuery读取JSON数据

时间:2019-03-15 08:52:22

标签: jquery

我有以下格式的数据:

[{"data":{"maximum_seconds":"-1","emergency_address_code":"","e999_code":""},{"data":{"maximum_seconds":"-1","emergency_address_code":"","e999_code":""}}]

我正在尝试使用JQuery进行阅读。

我尝试了多种选择,但似乎都没有用。

for(var i in data) {
    console.log( data.maximum_seconds);
    console.log( data[i].maximum_seconds);
}

console.log( x[1].maximum_seconds);

我的代码如下:

var x = voip_get_numbers('',``); var x = voip_get_numbers('',``); x.done(function(data){     $('#d')。append(data);

for(var i in jsonObjData) {
    console.log( data[i] );
}

});

我的任何JQuery函数是:

function voip_get_numbers(account_seq, customer) {
    return $.ajax({
        url : '/section/voip/numbers',
        type: "GET",
        data: {
            "action": "list_numbers",
            "seq": account_seq,
            "customer": customer,
        },
        datatype: 'json',
    });
}

我确实尝试了其他方法,但是我的代码已被覆盖,所以我没有它-我认为这是一个相当简单的任务,但是我对JQuery和JS并不是最好的选择,所以请原谅我的无知。

请帮忙。

谢谢

3 个答案:

答案 0 :(得分:1)

没有某些jQuery可以确定(某些性能已指定)。

但是,您的JSON的结构不正确。应该看起来像这样。

 [
        {
            "data": {
                "maximum_seconds": "-1",
                "emergency_address_code": "",
                "e999_code": ""
            }
        },
        {
            "data": {
                "maximum_seconds": "-1",
                "emergency_address_code": "",
                "e999_code": ""
            }
        }
    ]

示例:

var a = [{
    "data": {
        "maximum_seconds": "-1",
        "emergency_address_code": "",
        "e999_code": ""
    }
}, {
    "data": {
        "maximum_seconds": "-1",
        "emergency_address_code": "",
        "e999_code": ""
    }
}]

//Syntax 1
for (var i in a) {
    console.log(a[i].data.maximum_seconds);
    console.log(a[i].data.emergency_address_code);
    console.log(a[i].data.e999_code);
}

//Syntax 2
for (var i = 0; i < a.length; i++) {
    console.log(a[i].data.maximum_seconds);
    console.log(a[i].data.emergency_address_code);
    console.log(a[i].data.e999_code);
}

//Syntax 3
a.forEach( x => {
    console.log(x.data.maximum_seconds);
    console.log(x.data.emergency_address_code);
    console.log(x.data.e999_code); 
} );

然后为什么要重复“ data”属性。您可以这样做:

 [
        {
            "maximum_seconds": "-1",
            "emergency_address_code": "",
            "e999_code": ""
        },
        {
            "maximum_seconds": "-1",
            "emergency_address_code": "",
            "e999_code": ""
        }
    ]

答案 1 :(得分:0)

您需要确保JSON数据是JSON对象而不是字符串。 如果您的数据是字符串,则将其转换为JSON对象。

jQuery提供了以下方法:$.parseJSON( jsonString )

示例:

var data = '[{"data":{"maximum_seconds":"-1","emergency_address_code":"","e999_code":""},{"data":{"maximum_seconds":"-1","emergency_address_code":"","e999_code":""}}]';

var jsonObjData = $.parseJSON( data );

答案 2 :(得分:0)

您的JSON文件无效。像这样更改文件:

 [{
    "data": {
        "maximum_seconds": "-1",
        "emergency_address_code": "",
        "e999_code": ""
    }
}, {

    "data": {
        "maximum_seconds": "-1",
        "emergency_address_code": "",
        "e999_code": ""
    }
}]

我使用JSONLint来验证文件。

比您可以使用

将字符串解析为对象
var json = JSON.parse(jsonString)

要从对象获取数据,请使用

for (var j in json) {
    var maximum_seconds = j.data.maximum_seconds
    var emergency_address_code = j.data. emergency_address_code
    var e999_code = j.data. e999_code
    // ... your code
}