Javascript Ajax中JSON响应数据长度未定义错误?

Javascript Ajax中JSON响应数据长度未定义错误?,javascript,jquery,ajax,json,response,Javascript,Jquery,Ajax,Json,Response,我想在JavaScript警报框中获取语言的长度- 见截图- Ajax响应- 我的Ajax代码- function search_menu(){ $.ajax({ type: 'post', url: rootUrl() + "rest_apis/search_menu.json", cache: false, success: function(res){ //alert(data.data[0].l

我想在JavaScript警报框中获取
语言
的长度-

见截图-

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条记录。为什么它显示为
未定义的

您将
语言
错写为
语言
,这就是为什么它是
未定义的

即使没有,它也是一个对象而不是数组,因此它没有
length
属性。您需要数一数键,以确定有多少个键。

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

实例:

var res={
“数据”:[
{
“语言”:{“107”:“英语”,“142”:“印地语”,“143”:“印度尼西亚语”}
}
]
}
警报(“存在”+对象.key(res.data[0].language).length+“languages.”)

使用
Object.keys().forEach()。计算json长度


您的代码错误应为:var len=res.data[0]。语言?请尝试res[0]。language.length@库马尔-那肯定不行。@库马尔:你的代码不起作用了:(请参阅下面我的答案:Object.keys(res.data[0].language)。Length编辑后,您不应该得到所描述的结果。您应该得到
[Object]
提醒。第二次编辑后:请参阅我答案的第二段。很抱歉,输入错误。回答很好。谢谢:)很好,请验证并接受我的答案,如果你认为它是好的:)只是有点困惑为什么.length属性在另一个页面上工作,而只有你的答案在我的特定页面上工作。无论如何,谢谢!很好,这正是我的答案:)向下投票人的评论将帮助我改进我的答案。我不明白为什么人们这么快就受到向下投票人的制裁,而他们只是想提供帮助。我的回答虽然正确,后来得到了OP的验证,但立即被否决了两次。那些否决票是不公平的。“使用本地语言”变量的作用是什么?为什么不直接用just.length替换“forEach(函数(键){length++;})”?它会更干净、更快,而且……好吧,这就是我的答案:)@JeremyThille,很抱歉(现在我改变了),当然,这是更好的解决方案,这是另一个求长度的解决方案。当然,它有效;但它只是更慢,更多的代码,更多的行,更多的变量,更复杂。一句话,它只是不那么优雅。所以我想知道它的兴趣是什么?@JeremyThille,验证我的代码..我使用的是
原生Javascript
Object.keys().length
内部计算长度(表示用于循环)。但是
Object.keys().forEach(function(){//do your stuff})
。你们可以在函数中添加你们自己的东西。所以,我认为这两者都在做同样的工作。
var res={"data":[{"language":{"190":"english","191":"gujarati"}}]};
console.log( Object.keys(res['data'][0].language).length);
var json={"data":[{"language":{"190":"english","191":"gujarati"}}]};
var length=0;
Object.keys(json.data[0].language).forEach(function(key) {
  length++; 
});
alert(length);