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

Parsing JSON array within array with javascript without index

本文关键字:数组 javascript 索引 JSON 解析      更新时间:2023-09-26

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

这是我的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"

我想提醒说"错误与电子邮件"answers"错误与用户名"

我所做的一切似乎都不起作用,有什么想法吗?

谢谢

问题是您的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" }
]

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

data.errors.username
data.errors.email

你的问题不清楚你想用这两个属性做什么,但这就是你访问它们的方式。

如果你想迭代errors对象的属性,你可以这样做:

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

使用for ( in )循环。这将允许您遍历对象的属性。

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