Javascript Ajax中JSON响应数据长度未定义错误?
我想在JavaScript警报框中获取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
语言的长度-
见截图-
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);