4

This is the page I'm working on.... http://fremontchurch.net/json_test/

This is the json http://fremontchurch.net/json_test/posts.php

I'm trying to to have a list of tracks names listed and linked through simple html link <a href="URL_GOES_HERE">TRACK NAME GOES HERE</a> to its url

i got everything else in order its just the nested part keeps coming up "[object Object],[object Object],[object Object]"... and so on... each nest has two items a track name and url... what would be the correct way to do this?

heres one object from my json...

{
"id":"All Things Are Possible",
"key":"All Things Are Possible",
"doc":"All Things Are Possible",
"album":"All Things Are Possible",
"artwork":"http://godsgypsychristianchurch.net/music_artwork/DEFAULT_COVER2.png",
"baseurl":"http://www.godsgypsychristianchurch.net/music",
"church":"Atlanta GA",
"des":"All Things Are Possible from the Atlanta GA Church, Pastor Nick White",
"tracks":[
    {"name":"1 Intro",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/01%20Intro.mp3"},

            {"name":"2 Wo si O Drom",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/02%20Wo%20si%20O%20drom.mp3"},

            {"name":"3 Nas Murrgo Shov",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/03%20Nas%20murrgo%20shov.mp3"},

            {"name":"4 To Cho Vos",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/04%20To%20cho%20vos.mp3"},

            {"name":"5 Tu Son Kai Sastridas",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/05%20Tu%20son%20kai%20sastridas.mp3"},

            {"name":"6 Now I Am Strong",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/06%20Now%20I%20am%20strong.mp3"},

            {"name":"7 Sorr Nevee",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/07%20Zorr%20nevee.mp3"},

            {"name":"8 Preaching",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/08%20Preaching.mp3"},

            {"name":"9 Arkadyan Amey",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/09%20Arkadyan%20amey.mp3"},

            {"name":"10 O Christo Ka Wudarr",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/10%20O%20Christo%20ka%20wudarr.mp3"},

            {"name":"11 Eloi, Eloi",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/11%20Eloi%2C%20Eloi.mp3"},

            {"name":"12 Amadow Dell",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/12%20Amadow%20Dell.mp3"},

            {"name":"13 Sastiar Amey Devla",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/13%20Sastiar%20amey%20Devla.mp3"},

            {"name":"14 Tu Skepeese",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/14%20Tu%20skepeese.mp3"},

            {"name":"15 Dov Ma Godgee",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/15%20Dov%20ma%20godgee.mp3"},

            {"name":"16 The Lord is my strength",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/16%20The%20Lors%20is%20my%20strength.mp3"}
  ]

            }

heres all my code to the html/jquery/php

<html>
<body>
    <div id="content">
    </div>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
     <script type="text/javascript">
        $(document).ready(function(){
            var url="posts.php";
            $.getJSON(url,function(json){
                $.each(json.posts,function(i,post){
                    $("#content").append(
                        '<div class="post">'+
                        '<h1>'+post.album+'</h1>'+
                        '<p><img src="'+post.artwork+'"width="250"></img></p>'+
                        '<p><strong>'+post.church+'</strong></p>'+
                        '<p>Description: <strong>'+post.des+'</strong></p>'+
                        '<p>Base url:  <em>'+post.baseurl+'</em></p>'+
                        '<p>Tracks:  <li>'+post.tracks+'</li></p>'+
                        '<hr>'+
                        '</div>'
                    );
                });
            });
      });
    </script>
</body>
</html>

please reply will full code because I'm kinda new to this kind of coding and sometimes i done know where to put it... any help will be very much appreciated, thank you...

1
  • You don't need to parse JSON you can just use it, it's already an object! Commented Sep 29, 2011 at 6:20

2 Answers 2

3

You need to loop over each item in post.tracks and collect that information into a string before including it, something like this:

    $.each(json.posts,function(i,post){
        var content,
            trackInfo = '',
            tracks = post.tracks;

        // loop over the tracks and collect info
        $.each(tracks, function (i) {
            trackInfo += '<a href="' + tracks[i].url + '">' + tracks[i].name + '</a> ';
        });

        content = '<div class="post">'+
        '<h1>'+post.album+'</h1>'+
        '<p><img src="'+post.artwork+'"width="250"></img></p>'+
        '<p><strong>'+post.church+'</strong></p>'+
        '<p>Description: <strong>'+post.des+'</strong></p>'+
        '<p>Base url:  <em>'+post.baseurl+'</em></p>'+
        '<p>Tracks:  <li>'+ trackInfo +'</li></p>';
        '<hr>'+
        '</div>'

        $("#content").append(content);
    });

Working example here: http://jsfiddle.net/3SFE4/

Sign up to request clarification or add additional context in comments.

Comments

1

In the same way you're using each to iterate over the posts, you can use each to iterate over the tracks. I've included full code below.

<html>
<body>
    <div id="content">

    </div>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>

     <script type="text/javascript">
        $(document).ready(function(){
          var url="posts.php";

          $.getJSON(url,function(json){
            $.each(json.posts,function(i,post){

              // Here we generate a fragment for the tracks.
              var tracks = ''; 
              $.each(post.tracks, function(j, track) {
                tracks += '<a href="' + track.url + '">' + track.name + '</a>';
              })

              $("#content").append(
                '<div class="post">'+
                '<h1>'+post.album+'</h1>'+
                '<p><img src="'+post.artwork+'"width="250"></img></p>'+
                '<p><strong>'+post.church+'</strong></p>'+
                '<p>Description: <strong>'+post.des+'</strong></p>'+
                '<p>Base url:  <em>'+post.baseurl+'</em></p>'+
                'tracks' + 




                '<hr>'+
                '</div>'
              );
            });
          });
        });
      </script>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.