JSON 响应数据长度在 Ajax 中出现未定义错误?

JSON response data length getting undefined error in Ajax?

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

见截图-

Ajax 响应 -

我的 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

您将 language 拼错为 languge,这就是 undefined.

的原因

即使您没有,它也是一个对象而不是数组,因此它没有 length 属性。您需要数一数钥匙,看看有多少。

尝试: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." )

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

JS Fiddle

使用 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);