这是另一个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 对象的品种部分和以下所有索引/键?
> for(item in data)
循环应该可以解决问题,还有其他文章
实际上如何遍历或枚举 JavaScript 对象?
以下是重新格式化的 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);
}
}
在 FireFox 中使用 console.info
,您将能够可视化对象。
确保正确 json 的最简单方法是以您想要的 php tw 方式构建数组,然后在数组上使用 http://php.net/manual/en/function.json-encode.php 以将其发回
下面是 JSFiddle 演示:
例如,如果这是您的输出 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);
}
这将控制台在两个品种中的每一个下输出两个对象
试试这个
for (var i = 0, len = JSON.length; i < len; i++){
console.log(JSON[i].breed.msg +" - "+ JSON[i].breed.placement +" - "+ JSON[i].breed.return);
}