2

我正在开发一个网站,用户在其中输入一个随机单词并获取相关推文列表。

使用 json 获取包含链接、回复或主题标签的推文时,如何排除它们?

这是我的 jQuery 代码:

        <script>

        function go(){
          var url = "http://search.twitter.com/search.json?callback=results&q=" + $("#text").val();
          $("<script/>").attr("src", url).appendTo("body");  
            $("#text").remove();
        }

        $("#text").keydown(function(e){ if( e.which == 13 )  go(); });

        function results(r){
          window.results = r.results;
          window.theIndex = 0;
          displayNext();
        }
        function displayNext(){
          if( window.theIndex >= window.results.length ){
            return;
          }
          $('.content').remove();
            $('.helper').remove();
          createDiv( window.results[window.theIndex] );
          window.theIndex++;
          setTimeout(displayNext, 4000);
        }

        function createDiv(status){
          var tweets = status.text;
          $("<span class='content'>")
          .html(tweets)
          .appendTo("body");
          $("<span class='helper'>")
          .appendTo("body")
        }

        </script>
4

1 回答 1

0

根据Dev Twitter API 参考,返回的 JSON 对象包含一个result属性,该属性是代表所有推文的 JSON 对象数组。这些 JSON 数组中特别感兴趣的两个属性是entitites属性和to_user_id属性。因此,要检查推文是否不是回复且不包含任何链接,您将检查是否entities为空对象且to_user_id为空。

将您的displayNext功能更改为此应该可以工作:

function displayNext(){
    if( window.theIndex >= window.results.length ){
        return;
    }
    $('.content').remove();
    $('.helper').remove();
    var result = window.results[window.theIndex];
    if (Object.keys(result.entities).length !== 0 && result.to_user_id === null) {
        createDiv( window.results[window.theIndex] );
        window.theIndex++;
        setTimeout(displayNext, 4000);
    }
}​

(请注意,我正在使用How do I test for an empty JavaScript object?中的答案来检查是否entitites为空对象。)

于 2012-06-06T20:13:35.943 回答