ajax – Twitter和jQuery,呈现推文链接

前端之家收集整理的这篇文章主要介绍了ajax – Twitter和jQuery,呈现推文链接前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 jquery ajax从twitter api中提取,我确定这是一种简单的方法,但我找不到如何获取“推文”来呈现任何被推文出现的链接.现在它只是文字.
$.ajax({  
            type : 'GET',dataType : 'jsonp',url : 'http://search.twitter.com/search.json?q=nettuts&rpp=2',success : function(tweets) {  
               var twitter = $.map(tweets.results,function(obj,index) {  
                  return {  
                     username : obj.from_user,tweet : obj.text,imgSource : obj.profile_image_url,geo : obj.geo  
                  };  
               });

更新:
以下功能(插件)完美运行.

(function($) {

    $.socialFader = function(options) {

        var settings = {
            tweetHolder : null,tweetCount  : 100,fadeSpeed   : 500,tweetName: 'jquery'
        };  

        if (options) {
            $.extend(settings,options);
        };

        var URL = "http://search.twitter.com/search.json?q="+settings.tweetName+"&rpp=" + settings.tweetCount + "&callback=?";

        function relative_time(time_value) {

            var values = time_value.split(" ");
            time_value = values[1] + " " + values[2] + "," + values[5] + " " + values[3];
            var parsed_date = Date.parse(time_value);
            var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
            var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
            delta = delta + (relative_to.getTimezoneOffset() * 60);
            var r = '';
            if (delta < 60) {
                r = 'a minute ago';
            } else if(delta < 120) {
                r = 'couple of minutes ago';
            } else if(delta < (45*60)) {
                r = (parseInt(delta / 60)).toString() + ' minutes ago';
            } else if(delta < (90*60)) {
                r = 'an hour ago';
            } else if(delta < (24*60*60)) {
                r = '' + (parseInt(delta / 3600)).toString() + ' hours ago';
            } else if(delta < (48*60*60)) {
                r = '1 day ago';
            } else {
                r = (parseInt(delta / 86400)).toString() + ' days ago';
            }

         return r;

        };

        String.prototype.hashify = function() {
            return this.replace(/#([A-Za-z0-9\/\.]*)/g,function(m) {
                return '<a target="_new" href="http://twitter.com/search?q=' + m.replace('#','') + '">' + m + "</a>";
            });
        };

        String.prototype.linkify = function(){
            return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/,function(m) {
                return m.link(m);
            });
        };

        String.prototype.atify = function() {
            return this.replace(/@[\w]+/g,function(m) {
                return '<a href="http://www.twitter.com/' + m.replace('@','') + '">' + m + "</a>";
            });
        }; 

        $.getJSON(URL,function(JSON) {

            $.each(JSON.results,function(i,tweet) {

                var profilePicture = tweet.profile_image_url;
                var userLink = tweet.from_user;
                var text = tweet.text;
                text = text.linkify().atify().hashify();
                var createdAt = new Date(tweet.created_at);
                var myTweet = '<a href="http://www.twitter.com/' + userLink + '" title="' + userLink + '">' + userLink + '</a> ';
                myTweet += text;
                $(settings.tweetHolder).append('<li class="cycles">' + myTweet + '</li>');

            });

            var elements = $(settings.tweetHolder).children();
            var timeOutStart = 5000;

            function fader(elementId) {
                setTimeout(function() {
                    $(elements[elementId]).fadeOut(settings.fadeSpeed,function() {
                        $(elements[elementId + 1]).fadeIn(settings.fadeSpeed);
                    });
                },timeOutStart * (elementId));
            };

            for (var j = 0; j < elements.length; j++) {
                           fader(j);
                       };

        });

    };

})(jQuery);

在我的准备声明中:

$.socialFader({ tweetHolder:"#twitter",tweetName:"nettuts",tweetCount:2 });

解决方法

这是我写的一个插件,它真正简化了tweet / json聚合然后解析.它会使推文逐渐消失.只需抓住所需的代码即可.请享用.

(function($){

$.socialFader = function(options) {

        var settings = {
            tweetHolder : null,tweetCount  : 99,};  

        if (options) {
            $.extend(settings,options);
        };

        var URL = "http://search.twitter.com/search.json?q=jquery&rpp=" + settings.tweetCount + "&callback=?";

        function relative_time(time_value) {

            var values = time_value.split(" ");
            time_value = values[1] + " " + values[2] + ",timeOutStart * (elementId));
            };

            for (var j = 0; j < elements.length; j++) {
                fader(j);
            };

        });

    };

})(jQuery);

猜你在找的Ajax相关文章