我有以下伪结构。
[
{"product":
{
"id":"14",
"product_title":"My Awesome Product!",
"product_desc":"An awesome product.."
}
},
{"product":
{
"id":"15",
"product_title":"My MORE Awesome Product!",
"product_desc":"An AWESOMER product..."
}
}
]
我正在迭代它:
$.post('Ajax.php',function(res){
res = res.pop();
$.each(res,function(product){
alert(product.product_title);
});
});
但是,只显示了最后一个product_title
。它不是通过所有这些。
是我的代码还是我的JSON结构?谢谢!
编辑:.pop();
:Reading jQuery JSON Structure - cant get it to work
答案 0 :(得分:6)
如果你想迭代就不要弹出......
$.post('Ajax.php',function(res){
$.each(res,function( index, value ){
alert( value.product.product_title );
});
});
此外,您的JSON结构有一些冗余,可以写成:
[
{
"id":"14",
"product_title":"My Awesome Product!",
"product_desc":"An awesome product.."
},
{
"id":"15",
"product_title":"My MORE Awesome Product!",
"product_desc":"An AWESOMER product..."
}
]
这意味着一系列产品。您总是希望您的数组包含单一类型的东西。如果你想从服务器返回多个东西,这将是更合适的结构:
{
"products": [
{
"id":"14",
"product_title":"My Awesome Product!",
"product_desc":"An awesome product.."
},
{
"id":"15",
"product_title":"My MORE Awesome Product!",
"product_desc":"An AWESOMER product..."
}
],
"kittens": [
{
"id":"14",
"name":"kitty"
},
{
"id":"15",
"name": "kitty"
}
]
}
一系列产品和一系列小猫,绝不是一系列产品和小猫。
答案 1 :(得分:3)
你的res = res.pop(); line将res设置为res数组的最后一个元素。如果删除该行,它应该按预期工作。
答案 2 :(得分:3)
$.post('Ajax.php', function(res) {
for (var i = 0, j = res.length; i < j; i++) {
console.log(res[i].product.product_title);
}
});
试试这个,它应该显示2个产品标题。 JSON结构很好。
答案 3 :(得分:0)
我的建议是使用简单的JavaScript迭代(for
循环):
var temp =
[
{"product":
{
"id":"14",
"product_title":"My Awesome Product!",
"product_desc":"An awesome product.."
}
},
{"product":
{
"id":"15",
"product_title":"My MORE Awesome Product!",
"product_desc":"An AWESOMER product..."
}
}
]
for(var i = 0; i < temp.length; i++)
{
console.log(temp[i].product.id);
}