使用没有索引的javascript解析数组中的JSON数组

时间:2011-12-19 07:20:28

标签: javascript json multidimensional-array

不确定如何标题,但这是我的问题:

这是我的javascript:

$.post("register", element.serialize(),
        function(data){
             if(data.success == "true"){
                           // Do whatever
            } else if (data.success == "false"){

                for (i = 0; i < data.errors.length; i++){
                      // This is what I need to change      
                      alert(data.errors[i][0]);
                }
            }
        }, "json");

以下是传入的JSON字符串:

{"success":"false","errors":{"username":"error with username","email":"error with email"}}

分手,即:

errors: {
   email: "error with email"
   username: "error with username" }
success: "false"

我希望警报说“电子邮件错误”和“用户名错误”

我似乎没有做任何工作,但任何想法?

由于

3 个答案:

答案 0 :(得分:2)

问题是,您的errors属性不是array,而是object属性。 这是你应该使用的代码:

alert(data.errors.email);

有效的array对象声明,请注意[]

errors: [
   { email: "error with email", username: "error with username" },
   { email: "error with email 2", username: "error with username 2" }
]

答案 1 :(得分:1)

data.errors不是数组。它是一个具有属性的对象:

data.errors.username
data.errors.email

从您的问题中不清楚您要对这两个属性做什么,但这就是您访问它们的方式。

如果要迭代错误对象的属性,可以这样做:

for (var key in data.errors) {
    // data in data.errors[key] here
}

答案 2 :(得分:0)

使用for ( in )循环。这将让你迭代对象的属性。

var msgs = [];
for (var error in errors) {
   msgs.push(errors[error]);
}