将变量分配给jQuery getJSON结果中的操纵数据

时间:2010-01-07 21:14:03

标签: javascript jquery json string variables

如何将变量分配给已使用.replace()操作的返回JSON数据,如下所示。 目的:根据JSON返回的视频ID构建视频缩略图的网址。

问题:如何将视频ID(例如mVWhWsgHzKM)分配给变量,以便构建缩略图URL。

$.getJSON(
    'http://gdata.youtube.com/feeds/users/soccerdude1935/favorites?alt=json-in-script&callback=?', 
    function(data){
        $.each(data.feed.entry, function(i, item){
            // assign variable to the returned JSON data
            var id = item['id']['$t']; 

            // URL contain video ID is put inside a P tag and assign class ID.
            $("<p></p>").text(id).addClass('vidId'); 

            $('p.vidId').each(function () {
                var id = $(this).text();
                // removes all other text from URL except for video ID.
                id = id.replace("http://gdata.youtube.com/feeds/videos/",""); 
                // video ID is assigned to a var. Is this correct? because it is not working as a var. 
                // Note: no errors when running the code.
                var imgSrc = $(this).text(id); 
            });

            // thumbnail URL construction and placement inside a img element's src tag.
            $(<img />).attr('src', 'http://i2.ytimg.com/vi/'+imgSrc+'/default.jpg');
        });
    }); 

导致img src URL看起来像:http://i2.ytimg.com/vi/mVWhWsgHzKM/default.jpg但是当我运行该代码时,它不会呈现所需的结果。有什么建议吗?

任何想法都将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

我剥离了代码以实际让它呈现。我刚刚创建了一个id = video的div标签,然后将每个缩略图附加到容器中。

使用您的代码,问题出现在您的第二个声明中。它无法运行,因此它永远不会为imgSrc赋值。现在这可能是因为我没有HTML。

    <div id="video"></div>
    <script>
        $(document).ready(function () {
            $.getJSON('http://gdata.youtube.com/feeds/users/soccerdude1935/favorites?alt=json-in-script&callback=?', 
            function(data){
                $.each(data.feed.entry, function(i, item){
                    var id = item['id']['$t'];

                    id = id.replace("http://gdata.youtube.com/feeds/videos/",""); 

                    $("#video").append('<div id="'+id+'">');
                    $("#video").append('<img src="http://i2.ytimg.com/vi/'+id+'/default.jpg">');
                    $("#video").append('</div>');
                });
            }); 
        });
    </script>