php - 使用 JQuery/PHP 解析嵌套的 JSON String 对象?

标签 php jquery json parsing nested

这是我正在处理的页面.... http://fremontchurch.net/json_test/

这是json http://fremontchurch.net/json_test/posts.php

我正在尝试通过简单的 html 链接列出和链接轨道名称列表 <a href="URL_GOES_HERE">TRACK NAME GOES HERE</a>到它的网址

我得到了其他所有东西,以便它只是嵌套部分不断出现“[object Object],[object Object],[object Object]”......等等......每个嵌套有两个项目一个轨道名称和 url... 执行此操作的正确方法是什么?

这是我的 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"}
  ]

            }

继承我所有的代码到 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>

请回复完整代码,因为我对这种编码有点陌生,有时我确实知道把它放在哪里...任何帮助将不胜感激,谢谢...

最佳答案

您需要遍历 post.tracks 中的每个项目并将该信息收集到一个字符串中,然后再包含它,如下所示:

    $.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);
    });

这里的工作示例:http://jsfiddle.net/3SFE4/

关于php - 使用 JQuery/PHP 解析嵌套的 JSON String 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7593174/

相关文章:

php - laravel 自定义异常处理

javascript - 如何使用 JQuery InsertAtCaret 函数

javascript - setInterval 之后重新调用 iframe

Jquery mmenu - 关闭时将菜单重置为主级别

json - 在 json 中没有嵌套数组的情况下哈希到 json

json - 无结果的 REST 搜索的 HTTP 状态代码

javascript - AngularJS - 使用 'true' 属性过滤数据

php - 基于动态选择填充选择字段

php - 在 php 中使用 OR 条件与 in_array 进行验证

php - 在我的测试/bootstrap/setup/etc 中使用 phpunit 命令行参数