JSON响应数据长度在Ajax中得到未定义的错误?

时间:2015-02-05 11:01:29

标签: javascript jquery ajax json response

我想在JavaScript警告框中获取language的长度 -

见截图 -

Ajax响应 -

enter image description here

enter image description here

我的Ajax代码 -

function search_menu(){
    $.ajax({
        type: 'post',
        url: rootUrl() + "rest_apis/search_menu.json", 
        cache: false,        
        success: function(res){ //alert(data.data[0].language[142]);
            var len = res.data[0].language.length; 
            alert(len); //Showing undefined
        },
        contentType: 'application/json',
        dataType: 'json'
    });
}

我只是警告alert(lang)它显示未定义。实际上在有36条记录的语言中。为什么显示undefined

4 个答案:

答案 0 :(得分:7)

尝试:Object.keys(res.data[0].language).length

实例:

var res = {
        "data" : [
                {
                  "language" : { "107":"english", "142":"hindi", "143" : "indonesian"}
                }
        ]
}


alert("There are " + Object.keys(res.data[0].language).length + " languages." )

答案 1 :(得分:3)

使用Object.keys().forEach();。计算你的json长度。....CHeck to click here....

var json={"data":[{"language":{"190":"english","191":"gujarati"}}]};
var length=0;
Object.keys(json.data[0].language).forEach(function(key) {
  length++; 
});
alert(length);

答案 2 :(得分:2)

var res={"data":[{"language":{"190":"english","191":"gujarati"}}]};
console.log( Object.keys(res['data'][0].language).length);

<强> JS Fiddle

答案 3 :(得分:1)

您将language拼错为languge,这就是undefined的原因。

即使你没有,它也是一个对象而不是一个数组,所以它没有length属性。您需要计算密钥以找出有多少密钥。