Jeevan Dongre
Jeevan Dongre

Reputation: 4649

retrieving the twitter search feeds dynamically using ajax

Long back I used JSON and was successful to get the hash tag feeds from twitter and facebook. But presently I am just able to get the feeds but its not being updated constantly that means it not been update dynamically. I guess I need to ajaxify it, but I am not able to do that since I am not aware of ajax. Here is the code which I have used to get the twitter search feeds.

$(document).ready(function() 
   {    
   $("#Enter").click(function(event){ 
var searchTerm = $("#search").val()  ; 

var baseUrl = "http://search.twitter.com/search.json?q=%23";
$.getJSON(baseUrl + searchTerm + "&rpp=1500&callback=?", function(data) 
{
$("#tweets").empty(); 
if(data.results.length < 1) 
  $('#tweets').html("No results JOINEVENTUS"); 
$.each(data.results, function()
{
$('<div align="justify"></div>')
.hide()
.append('<hr> <img src="' + this.profile_image_url + '" width="40px" /> ')
.append('<span><a href="http://www.twitter.com/'
+ this.from_user + '">' + this.from_user 
+ '</a> ' + makeLink(this.text) + '</span>')
.appendTo('#tweets') 
.fadeIn(800); 
});
});
});
});

function makeLink(text) 
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;   
return text.replace(exp,"<a href='$1'>$1</a>"); 
} 

Upvotes: 0

Views: 474

Answers (1)

fin1te
fin1te

Reputation: 4351

The code below should help you. What I've done is moved the code which fetches the tweets into a function. This function is then called every X seconds to update the box. When the user enters a new search term and clicks "Enter", it will reset the timer.

var fetchSeconds = 30; //Number of seconds between each update
var timeout; //The variable which holds the timeout
$(document).ready(function() {    
    $("#Enter").click(function(event){ 
        //Clear old timeout
        clearTimeout(timeout);
        //Fetch initial tweets
        fetchTweets();
    });
});

function fetchTweets() {
    //Setup to fetch every X seconds
    timeout = setTimeout('fetchTweets()',(fetchSeconds * 1000));
    var searchTerm = $("#search").val(); 
    var baseUrl = "http://search.twitter.com/search.json?q=%23";
    $.getJSON(baseUrl + searchTerm + "&rpp=1500&callback=?", function(data) {
        $("#tweets").empty(); 
        if (data.results.length < 1) {
            $('#tweets').html("No results JOINEVENTUS"); 
        }
        $.each(data.results, function() {
            $('<div align="justify"></div>').hide()
                                            .append('<hr> <img src="' + this.profile_image_url + '" width="40px" /> ')
                                            .append('<span><a href="http://www.twitter.com/'+ this.from_user + '">' + this.from_user + '</a> ' + makeLink(this.text) + '</span>')
                                            .appendTo('#tweets')
                                            .fadeIn(800); 
        });
    });
}

function makeLink(text) {
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;   
    return text.replace(exp,"<a href='$1'>$1</a>"); 
}

Hope this helps

Upvotes: 1

Related Questions