使用ajax动态检索twitter搜索供稿

时间:2011-04-14 10:56:34

标签: javascript jquery ajax json

很久以前我使用JSON并成功获得来自twitter和facebook的哈希标签供稿。但是目前我只能获得提要,但它不会不断更新,这意味着它没有动态更新。我想我需要ajaxify它,但我不能这样做,因为我不知道ajax。这是我用来获取Twitter搜索提要的代码。

$(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>"); 
} 

1 个答案:

答案 0 :(得分:1)

以下代码可以为您提供帮助。我所做的是将获取推文的代码移动到一个函数中。然后每隔X秒调用此函数以更新该框。当用户输入新的搜索词并单击“Enter”时,它将重置计时器。

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>"); 
}

希望这有帮助