javascript - 如何获取 json 返回数据的长度并运行 for 循环

标签 javascript php json ajax

<分区>

我有这个 ajax 调用,它的结果是 json 格式

$.ajax({
    url: link,
    dataType: "json",
    success: function(data){
        console.log(data); //C.L-1
        console.log(data.length); //C.L-2
    }
})

这是结果

$users_arr = array();
//After a successful query from my database
While($sql = mysqli_fetch_array($query)){
    $user_id = $sql['id'];
    $user_age = $sql['age'];
    $user_name = $sql['name'];
    $users_arr[$user_id] = $user_id.','.$user_name.','.$user_age;
}
echo json_encode($users_arr);

现在 C.L-1 返回 true 但 C.L-2 返回 undefined。我认为返回的 data 是一个数组,所以我想像这样为每个用户运行一个 for 循环

for(var i = 0; data.length > i; i++){
    eachUser = data[i];
    userInfo = eachUser.split(',');
    userId = userInfo[0]; // and so on for the other info
    $('div#age'+userId).html(userAge);
}

但问题是 data.length 返回 undefined 这阻止了我运行我的 for 循环。请有更好的帮助吗?

编辑这里是一些来自C.L-1的数据

Object {8: "8,debbie,23", 3: "3,doggie,20", 7: "7,dini,22"}

最佳答案

用一个简单的 for ... in 循环:

var obj = {
  7: "8,debbie,23",
  8: "3,doggie,20",
  9: "7,dini,22"
};

for(var x in obj){
  console.log(obj[x]);
}

for in 循环的替代方案可以是:

var obj = {
  7: "8,debbie,23",
  8: "3,doggie,20",
  9: "7,dini,22"
};

Object.keys(obj).forEach(function(key) {
    console.log(key, obj[key]);
});

重要的是要知道,只有当 keys0 开始时,您才能使用接下来的两个选项。

您可以像这样计算对象中的元素:

var obj = {
  0: "8,debbie,23",
  1: "3,doggie,20",
  2: "7,dini,22"
};
var wrong_count = obj.length; //this will return undefined
var correct_length = Object.keys(obj).length; //this will return 3
console.log(wrong_count);
console.log(correct_length);

for(var i = 0; i < correct_length; i++){
  console.log(obj[i]);
}

有关Object.keys()的更多信息,您可以引用link .

另一种替代方法是使用 for in 循环:

var obj = {
  0: "8,debbie,23",
  1: "3,doggie,20",
  2: "7,dini,22"
};

var another_count = 0;
for(var x in obj){
	another_count++;
}
console.log(another_count);

for(var i = 0; i < another_count; i++){
  console.log(obj[i]);
}

关于javascript - 如何获取 json 返回数据的长度并运行 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40527901/

相关文章:

php - 如何从数据库中获取 <option value> 作为数组?

ios - 复合键问题 Realm Swift

c# - 将 json 字符串反序列化为对象 - Silverlight

ios - 如何根据 API 类型发送带有 BODY 的 POST 或 GET 请求

javascript - PHP 嵌套代码带引号

javascript - 如何在 Javascript 中找到两个 UTC 时间之间的差异?

javascript - 在函数内部定义外部作用域变量

javascript - 原型(prototype)悬停内容和子项

php - Laravel Route 模型与关系绑定(bind)

php - 在 PHP 中使用 cURL 的 SSL Twitter oauth