在Json调用中使用数组变量(索引)

时间:2013-03-10 10:25:26

标签: javascript jquery jsonp

我知道我在这里错过了一些非常简单的东西,但我现在已经找了一段时间并且没有任何解决方案的运气。

我有一些看起来像这样的json数据

post[{
//various post data
categories": {

    "Rants": {
        "name": "Rants",
        "slug": "rants",
        "description": "",
        "post_count": 9
}]

我正在尝试使用each()循环

返回类别slug
$.each(response.posts[0].categories, function (index) {
                alert(response.posts[0].categories.index.slug);
});

当我调用alert(response.posts[0].categories.rants.slug);时,它会起作用,但当我尝试使用索引作为键时,它不起作用。

任何想法?

4 个答案:

答案 0 :(得分:2)

当你这样写:

alert(response.posts[0].categories.index.slug);

您正在尝试读取名为categories的{​​{1}}属性,该属性不存在。如果您真的想要阅读每个元素,您必须编写以下内容:

"index"

答案 1 :(得分:1)

$.each(response.posts[0].categories, function(name, category) {
    alert(category.slug);
});

答案 2 :(得分:1)

应该是

 alert(response.posts[0].categories[index].slug);

更多细节

jQuery为您解决此问题。 .each()回调函数的第一个参数是循环当前迭代的索引。第二个是当前匹配的DOM元素So:

$('#list option').each(function(index, element){
  alert("Iteration: " + index)
});

编辑1

这是each api链接
http://api.jquery.com/each/

答案 3 :(得分:0)

这里不需要jQuery。看起来它只是妨碍你。只需:

alert(response.posts[0].categories.Rants.slug);

或循环遍历所有“咆哮”(category中的categories):

for (var category in response.posts[0].categories) {
  alert(response.posts[0].categories[category].slug)
}