【问题标题】:Iterating thru an array using javascript for [duplicate]使用 javascript 遍历数组 [重复]
【发布时间】:2012-08-15 12:07:53
【问题描述】:

如何在 jquery 中使用“for”遍历这样的数组。这个让我完全迷失了。我不知道如何从这样的数组中取出这些值,也无法更改数组的完成方式。

//Php
$errors['success']   = false;
$errors['#errOne']   = "Enter a valid username";
$errors['#errTwo']   = "Enter a valid email";
$errors['#errThree'] = "Enter a valid password";
echo json_encode($errors);//

dataType:"json",
cache:false,
success: function(data){
for (i=1; i<?; i++){//Start at 1
//I'm totally lost here.
//Output: "#errOne" "Enter a valid username" ->Loop thru remaining messages
}   
},

【问题讨论】:

  • 小心i是全球性的,使用var

标签: javascript jquery


【解决方案1】:

由于您将数据作为参数传递,因此您可以访问数据

试试这样的:

var $errors = {};
$errors['success']   = false;
$errors['#errOne']   = "Enter a valid username";
$errors['#errTwo']   = "Enter a valid email";
$errors['#errThree'] = "Enter a valid password";
    data : $errors;
    success: function(data){
    for (var i in data ){
       console.log(i + ':' + data[i]);
    }

【讨论】:

  • @some 我在第一行本身创建对象。你认为我在哪里滥用 javascript 中的数组?
  • 这是我需要的 99%。唯一的问题是:知道如何从 [1] 而不是 [0] 开始吗?
【解决方案2】:

也许你需要这个:

success: function(data){
    $.each(data, function(key, value) { 
        alert(key + ': ' + value); 
    });
}

【讨论】:

  • 我从哪个 $.each 开始。如果我们能告诉 $.each 从哪里开始——从 [0] 或 [1] 开始,那就太好了。例如:for (i=1;...
  • 在不同的浏览器中数据的排序会有所不同。在 FF 中它会保持原样,但 Chrome 会自动按键对数据进行排序。所以在不同的浏览器中,第一个元素会有所不同
【解决方案3】:
for (var key in data){
   alert(key); // gives keys  success, #errOne, #errTwo, #errThree
   alert(data[key]); // gives values  false, Enter a valid username, Enter a valid email, Enter a valid password
}  

【讨论】:

  • 当使用 for (var key in data) 时,我们可以告诉它从 [1] 而不是 [0] 开始吗?例如:for (i=1;...
【解决方案4】:

如果你的 PHP 代码是这样的:

// Use $errors = array(...) if your PHP version is < 5.4
$errors = [
    'success' => false, // Why is 'success' part of the $errors array?
    'error_1' => 'Enter a valid username.',
    'error_2' => 'Enter a valid email.',
    'error_3' => 'Enter a valid password.'
];

print json_encode($errors);

,然后在您的 JavaScript 中,您可以执行以下操作:

$.ajax({
    'url': 'your.url.com/data.json',
    'dataType': 'json',
    'cache': false, // Why are you doing this?
    'success': function (json_data) {
        var i = json_data.length;
        while (i--) {
            alert(json_data[i]); // Or whatever you want to do with the data.
        }
    }
});

我很确定这是最好的方法之一。如果我错了,请有人纠正我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2012-01-07
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多