0

我对 js 和 web 开发人员很陌生,正在寻求帮助。

我正在尝试获取足够的信息来格式化并提出另一个请求。这就是我到目前为止所拥有的

JavaScript

$( document ).ready(function(sb_shows) {
    $.getJSON( "http://<myname>/api/<apikey>/?cmd=shows&callback=?", function(shows_obj) { 
        //$.each(shows_obj, function(key, value) { 
        if ( shows_obj.result == "success") {
            document.write(shows_obj.result);

            $.each(shows_obj.data, function(key, value) { 

                $.each(this.cache function(key, value) { 
                    document.write( "<p> "+value.banner+"<p>");
                });

                document.write( "<p>"+value.show_name+" - "+value.tvrage_id+ "<p>");

            });
        }
        else {
            document.write("fail..");
        }

    });
});

JSON 示例

{
"data": {
    "72023": {
        "air_by_date": 0, 
        "cache": {
            "banner": 1, 
            "poster": 1
        }, 
        "language": "en", 
        "network": "HBO", 
        "next_ep_airdate": "", 
        "paused": 0, 
        "quality": "SD", 
        "show_name": "Deadwood", 
        "status": "Ended", 
        "tvrage_id": 3267, 
        "tvrage_name": "Deadwood"
    }, 
    "72231": {
        "air_by_date": 1, 
        "cache": {
            "banner": 1, 
            "poster": 1
        }, 
        "language": "en", 
        "network": "HBO", 
        "next_ep_airdate": "2013-09-13", 
        "paused": 0, 
        "quality": "HD720p", 
        "show_name": "Real Time with Bill Maher", 
        "status": "Continuing", 
        "tvrage_id": 4950, 
        "tvrage_name": "Real Time With Bill Maher"
    }, 

}, 
"message": "", 
"result": "success"
}

我希望实现的是获取数据下的 id(例如 72023 和 72231),我原本以为我可以做类似的事情

$(this).parent()

它是一个对象,但它似乎不起作用

我也希望能够遍历子 obj,如下所示

$.each(shows_obj.data, function(key, value) { 
    $.each($(this).cache function(key, value) { 

        document.write( "<p> "+value.banner+"<p>");

    });
    document.write( "<p>"+value.show_name+" - "+value.cache.banner+ "<p>");
});

任何和所有建议/建议将不胜感激。请解释建议,我有点慢:)

4

1 回答 1

0

在您第一次$.each()调用该data对象时,您key实际上是您要查找的 ID 号。Google 很快向我介绍了 JSON,这可能会对您有所帮助。

根据jQuery.each 文档,关键字与关键字this相同value。你$.each($(this).cache, ...)应该只是$.each(this.cache, ...)或者$.each(value.cache, ...)你没有遍历 dom ( $(..)) 而是将一个对象传递给$.each()函数。就像前面的情况一样,如果您遍历this.cache,您的回调将被调用两次:

// first
key => banner
value => 1

// second
key => poster
value => 1

如果您只是想要缓存中的横幅,那么要做的事情就是:value.cache.banner在您原来的$.each(shows_obj.data, ...)

于 2013-08-05T20:40:18.873 回答