不确定如何标题,但这是我的问题:
这是我的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"
我希望警报说“电子邮件错误”和“用户名错误”
我似乎没有做任何工作,但任何想法?
由于
答案 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]);
}