JavaScript/jQuery 遍历 JSON 个对象的解决方案
JavaScript/jQuery solution for looping through JSON objects
我收到了 PHP 发来的这种 JSON:
{"status":"error","message":"Firstname is invalid"}{"status":"error","message":"Lastname is invalid"}{"status":"success","message":"Middle name is fine"}
Ajax 正在检索我成功的东西:
success:function(data){
data=JSON.parse(data);
//need to loop trough data here
}
所以问题是我需要立即 console.log(data.status /* AND */ data.message)。
(忽略上面的评论)
所以在上面的 JSON 示例中,我希望能够 console.log 以下内容:
(1) 错误名字无效
(2) 错误 Lastname is invalid
(3) success 中间名就可以了
(“()”中的上述数字仅表示它在 chrome 中的控制台中的样子。我不需要对它们进行实际编号)
////////
我实际上想要完成的是根据 status.value(成功或错误)显示带有 alrtify.js 的 success/error 消息。我不想在一个通知中全部显示它们。我希望每个 error/success 都显示为单独的通知。为此,我需要遍历它们。
假设您实际收到的是一个数组,而不是您在那里显示的无效 JSON:
success:function(data){
data=JSON.parse(data); // you probably shouldn't be using this line
data.forEach(function (item) {
console.log(item.status + ' ' + item.message);
});
}
这段代码对我来说就像一个魅力。
请注意,在我的字符串中对象是用逗号分隔的,而不是你的 '{"status":"error","message":"Firstname is invalid"}{"status": "error","message":"Lastname is invalid"}{"status":"success","message":"Middle name is fine"}'
var data = '[{"status":"error","message":"Firstname is invalid"}, {"status":"error","message":"Lastname is invalid"}, {"status":"success","message":"Middle name is fine"}]';
var parsedData = JSON.parse(data);
parsedData.forEach(function(item, index) {
alert(item.status + " - " + item.message);
console.log(item.status + " - " + item.message);
});
success:function(data){
data=JSON.parse(data); // you probably shouldn't be using this line
var data = $.parseJSON(item);
for (var i=0; i < data.length; i++){
var obj = data[i];
var status = obj.status;
var message = obj.message;
}
});
请查看您的 JSON 格式。它应该像:
[{"status":"error","message":"Firstname is invalid"},{"status":"error","message":"Lastname is invalid"},{"status":"success","message":"Middle name is fine"}];
所以最终你将能够循环。
var data = [{"status":"error","message":"Firstname is invalid"},
{"status":"error","message":"Lastname is invalid"},
{"status":"success","message":"Middle name is fine"}];
for(var i in data)
{
console.log(data[i].message)
}
我收到了 PHP 发来的这种 JSON:
{"status":"error","message":"Firstname is invalid"}{"status":"error","message":"Lastname is invalid"}{"status":"success","message":"Middle name is fine"}
Ajax 正在检索我成功的东西:
success:function(data){
data=JSON.parse(data);
//need to loop trough data here
}
所以问题是我需要立即 console.log(data.status /* AND */ data.message)。 (忽略上面的评论)
所以在上面的 JSON 示例中,我希望能够 console.log 以下内容:
(1) 错误名字无效 (2) 错误 Lastname is invalid (3) success 中间名就可以了
(“()”中的上述数字仅表示它在 chrome 中的控制台中的样子。我不需要对它们进行实际编号)
////////
我实际上想要完成的是根据 status.value(成功或错误)显示带有 alrtify.js 的 success/error 消息。我不想在一个通知中全部显示它们。我希望每个 error/success 都显示为单独的通知。为此,我需要遍历它们。
假设您实际收到的是一个数组,而不是您在那里显示的无效 JSON:
success:function(data){
data=JSON.parse(data); // you probably shouldn't be using this line
data.forEach(function (item) {
console.log(item.status + ' ' + item.message);
});
}
这段代码对我来说就像一个魅力。 请注意,在我的字符串中对象是用逗号分隔的,而不是你的 '{"status":"error","message":"Firstname is invalid"}{"status": "error","message":"Lastname is invalid"}{"status":"success","message":"Middle name is fine"}'
var data = '[{"status":"error","message":"Firstname is invalid"}, {"status":"error","message":"Lastname is invalid"}, {"status":"success","message":"Middle name is fine"}]';
var parsedData = JSON.parse(data);
parsedData.forEach(function(item, index) {
alert(item.status + " - " + item.message);
console.log(item.status + " - " + item.message);
});
success:function(data){
data=JSON.parse(data); // you probably shouldn't be using this line
var data = $.parseJSON(item);
for (var i=0; i < data.length; i++){
var obj = data[i];
var status = obj.status;
var message = obj.message;
}
});
请查看您的 JSON 格式。它应该像:
[{"status":"error","message":"Firstname is invalid"},{"status":"error","message":"Lastname is invalid"},{"status":"success","message":"Middle name is fine"}];
所以最终你将能够循环。
var data = [{"status":"error","message":"Firstname is invalid"},
{"status":"error","message":"Lastname is invalid"},
{"status":"success","message":"Middle name is fine"}];
for(var i in data)
{
console.log(data[i].message)
}