我有以下代码:
$(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
问题是,我想用填充在功能中的数组访问值并执行方法(例如.engength),但它以某种方式行不通。有人可以帮忙吗?干杯。
您可以使用$。
,例如
$.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}
希望它能帮助您
如果AJAX调用返回的JSON数据,则必须通过对象符号访问该数据,如果它是命名数组。检索此类数据对象的长度:
Object.keys(data.datanode).length
尚不清楚您的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和返回的位置。我建议阅读有关JavaScript,特别是关闭和可变范围的基本书籍。这就是为什么您的代码不起作用,并且问题不在AJAX,JSON或对象迭代中。