我已获得以下代码:
$(document).ready(function() {
var blu = getData();
console.log(blu); //this shows full the array in the console
console.log(blu.length); //this gives back 0
});
使用以下函数getData()
function getData() {
var arr = [];
var json;
$.ajax({
url: "someurl.com",
dataType: 'json',
data: json,
success: function(json) {
var x = json.somejson.somenumericvalue //gets the amount of dataentries
for (i = 0; i <= x - 1; i++) {
arr.push(json.feeds[i].field1); // fill up array with the values from the json feed
}
} //end of success function
}); //end of ajax
console.log(arr.length) //shows the correct length of the array
return arr;
} //end of function getData
问题是我想访问值并使用函数中填充的数组执行方法(如.length),但它在某种程度上不起作用。有人可以帮忙吗? 干杯。
答案 0 :(得分:0)
您可以使用$ .each或for in循环
E.g。
$.each(Blu, function (i, v){//do whatever with array values, i: index, v: value}
或者
For(i in Blu){//i: index, access your value by Blu[I] & do whatever with your value}
希望它会帮助你
答案 1 :(得分:0)
目前尚不清楚你的json是什么样的,你可能需要遍历它。假设您想要遍历json.feeds:
function getData(){
var arr = [];
var json;
$.ajax({
url: "someurl.com",
dataType: 'json',
data: json,
success: function(json){
for(var i in json.feeds) {
arr.push(json.feeds[i].field1); // fill up array with the values from the json feed
}
console.log(arr.length)//shows the correct length of the array
return arr;
} //end of success function
}); //end of ajax
}//end of function getData
还要注意console.log和return的位置。我建议阅读一本关于javascript的基本书,特别是闭包和变量范围。这就是为什么你的代码不起作用,问题不在于ajax,json或对象迭代。
答案 2 :(得分:0)
如果ajax调用返回的json数据是命名数组,则必须通过对象表示法访问它。要检索此类数据对象的长度,请使用:
Object.keys(data.datanode).length