json help(如何从特定字段获取数据并在网页中使用它)

时间:2010-08-26 23:31:18

标签: javascript json

我在reddit网站上找了一些帮助,但我仍然无法弄明白,所以我转发到了这里。我也搜索了这个论坛,但是我没有找到足够接近的答案,也不了解编程从我发现的内容中推断出来。

我当然不是一个程序员;这似乎是可能的,但我无法弄清楚如何做到这一点。

我希望能够在网页上插入reddit线程的链接,并在我链接到的帖子中显示评论数量。

我理解如何做第一部分:

<a href="http://www.reddit.com/r/redditdev/comments/d570p/reddit_widget_help/" 
target="_blank">4eddit thread<br /></a>

我知道我可以通过将.josn附加到网址

来获取有关该主题的信息

http://www.reddit.com/r/redditdev/comments/d570p/reddit_widget_help.json

我知道我在json输出中需要的数据是“ num-comments ”。

我怎样才能想出这样的东西......

reddit widget help(n条评论)

...其中n从.json信息中提取并在页面加载时更新?

更新

我使用Matthew Flaschen的示例来实现它。

在最后一个小时左右,我发现moodle(我们的在线课程管理系统)不支持JQuery,只支持YUI。而且无论如何我似乎无法获得和YUI javascript示例在我能够编辑的html部分中运行(我假设这是因为我无法编辑该部分)。

作为一种解决方法,我可以加载这个html:

<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        function show_num_comments(response) {
            $(function() {
                $('#comm_count').text(response[0].data.children[0].data.num_comments);
            });
        }
    </script>
    <script type="text/javascript" src="http://www.reddit.com/r/redditdev/comments/d570p/.json?jsonp=show_num_comments"></script>
</head>
<body>  
    <div id="thread"><span id="comm_count"></span> comments</div>
</body>
在iframe中

。不幸的是,这意味着我必须为我希望学生讨论的每个课程/评论帖子都有一个单独的html文件(对于每个iframe)。

是否有任何让这更优雅的想法?

1 个答案:

答案 0 :(得分:1)

我做了一个简单的概念验证。你可以在JSFiddle上测试它。 (with jQuery)(without jQuery):

Thread has <span id="comm_count"></span> comments
<script type="text/javascript">
    function show_num_comments(response)
    {
       window.addEventListener("load", function()
       {
         document.getElementById('comm_count').textContent = response[0].data.children[0].data.num_comments;
       }, false);
    }
</script>
<script type="text/javascript" src="http://www.reddit.com/r/redditdev/comments/d570p/reddit_widget_help/.json?jsonp=show_num_comments"></script>

因为这是跨域的,所以我们必须使用JSONP(带填充的JSON)。基本上,这意味着我们在页面上提供了一个特殊功能(show_num_contents),然后使用脚本标记。 Reddit响应一个调用该函数的脚本,传入JavaScript对象。

我们使用addEventListener等待加载来操作DOM。