多维JSON结构问题

时间:2011-11-16 11:28:38

标签: javascript jquery json

我有以下伪结构。

[
   {"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

的原因

4 个答案:

答案 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);
}