I'm going to traverse all post elements in this json response body using jQuery .each operator.

{
"posts": [
    {
        "Post": {
            "post_id": "1",
            "url": "somUrl",
            "image": "",
            "body": "textbody",
            "parent_id": "0",
            "title": "title1"
        }
    },
    {
       "Post": {
            "post_id": "2",
            "url": "somUrl",
            "image": "",
            "body": "textbody",
            "parent_id": "0",
            "title": "title2"
        }
        }
    },
    {
        "Post": {
            "post_id": "3",
            "url": "somUrl",
            "image": "",
            "body": "textbody",
            "parent_id": "0",
            "title": "title3"
        }
    },
    {
        "Post": {
            "post_id": "4",
            "url": "somUrl",
            "image": "",
            "body": "textbody",
            "parent_id": "0",
            "title": "title4"
        }
    }
]}

I wrote this code but it's not able to print the titles. It doesn't loop through the post items.

What should I do to make this code work?

data is the response variable that is passed to the callback function of ajax.

$.each(data,function(key,post){console.log(post.title)});

Thanks for any help.

有帮助吗?

解决方案

The way that you are trying to access the json is wrong. Please think in the perspective of iterating an array of json.

Try,

$.each(data.posts , function(index,val){
   console.log(val.Post.title)
});

DEMO

其他提示

at the place of data use data.posts

$.each(data.posts,function(key,val){
               console.log(val.post.title);
});

i think this will help you

$.each(data.posts,function(index,value){console.log(value.post.title)});

this should work, tested on fiddle:

$.each(data.posts,function(index,item){

console.log(item.Post);

});

for accessing specific property:

console.log(item.Post.propertyName);

for example:

 console.log(item.Post.title);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top