json help (как получить данные из определенного поля и использовать их на веб-странице) - PullRequest
0 голосов
/ 27 августа 2010

Я искал некоторую помощь на самом сайте Reddit, но я все еще не могу понять это, поэтому я разместил здесь.Я также искал этот форум, но я не нашел достаточно близкого ответа и не знаю достаточно о программировании, чтобы экстраполировать из того, что я нашел.

Я определенно не большой программист;это кажется возможным, но я не могу понять, как это сделать.

Я хотел бы иметь возможность вставить ссылку на ветку reddit на веб-странице, а также отобразить количество комментариев в ветке, на которую я ссылался.

Я понимаю, каквыполните первую часть:

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

И я знаю, что могу получить информацию о потоке, добавив .josn к URL-адресу

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

И я знаю,данные, которые мне нужны в выводе json: " num-comments ".

Как я могу придумать что-то похожее на это ...

redditсправка виджета (n комментариев)

... где n извлекается из информации .json и обновляется при загрузке страницы?

Обновление

Я использовал приведенный ниже пример Мэтью Флэшена, чтобы он заработал.

За последний час или около того я обнаружил, что Moodle (наша система управления онлайн-курсами) не поддерживает JQuery, а только YUI.И в любом случае я не могу получить примеры JavaScript и YUI для запуска в разделах 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 Ответ

1 голос
/ 27 августа 2010

Я сделал простое подтверждение концепции.Вы можете проверить это на JSFiddle.( с jQuery ) ( без 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), а затем используем тег script.Reddit отвечает скриптом, который вызывает функцию, передавая объект JavaScript.

Мы используем addEventListener, чтобы дождаться загрузки, чтобы манипулировать DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...