这是另一个 JSON 问题(我总是在努力使用数组)。
我的PHP代码返回以下 JSON 结构:
[{"breed":{"msg":"Breed is required","placement":"#breed_error_1","return":"false"}},{"breed":{"msg":"Breed does not exist","placement":"#breed_error_2","return":"true"}}]
我的PHP代码是:
$breed[]["breed"] = array("msg"=>"Breed is required","placement"=>"#breed_error_1", "return"=>"false");
$breed[]["breed"] = array("msg"=>"Breed does not exist","placement"=>"#breed_error_2", "return"=>"true");
和AJAX代码:
$.ajax({
type: 'POST',
cache: false,
url: "validate_breed",
data: element+"="+$(elementSelector).val()+"&v="+validateElement,
context: document.body,
dataType: 'html',
success: function(data){
alert(data);
}
});
alert(data)
警告 JSON 结构以进行调试。
如何访问 JSON 对象的品种部分以及以下所有索引/键?
答案 0 :(得分:2)
一个for(item in data)
循环应该可以解决这个问题,还有其他一些关于获取值的文章
答案 1 :(得分:1)
在FireFox中使用console.info
,您就可以将对象可视化。
答案 2 :(得分:1)
这是重新格式化的JSON:
[
{
"breed":{
"msg":"Breed is required",
"placement":"#breed_error_1",
"return":"false"
}
},
{
"breed":{
"msg":"Breed does not exist",
"placement":"#breed_error_2",
"return":"true"
}
}
]
你拥有的是两个对象[]
的数组{}
。
首先,你要做一个for (var i = 0; i < JSON.length; i++)
循环来获取每个对象(你有2个)。
段:
for (var i = 0, len = JSON.length; i < len; i++){
thisBreed = JSON[i].breed; //now this == {"msg" : etc etc}
for (prop in thisBreed) {
console.log(thisBreed.msg + thisBreed.placement + thisBreed.return);
}
}
答案 3 :(得分:1)
最简单的方法是确保正确的json是以你想要的方式构建数组,然后在发送之前在数组上使用http://php.net/manual/en/function.json-encode.php
答案 4 :(得分:1)
例如,如果这是您的输出JSON对象,那么您可以使用for循环访问每个品种的索引:
var myJSON = [{
"breed": {
"msg": "Breed is required",
"placement": "#breed_error_1",
"return": "false"
}},
{
"breed": {
"msg": "Breed does not exist",
"placement": "#breed_error_2",
"return": "true"
}}];
for(var i=0;i<myJSON.length; i++){
console.log(myJSON[i].breed);
}
这将控制输出两个品种
中每个品种下的两个对象答案 5 :(得分:0)
试试这个
for (var i = 0, len = JSON.length; i < len; i++){
console.log(JSON[i].breed.msg +" - "+ JSON[i].breed.placement +" - "+ JSON[i].breed.return);
}