setInterval和json

时间:2013-03-25 19:54:03

标签: javascript jquery json

我有一个简单的html表单。 (输入(文本)和提交按钮。)。当我输入任何单词并按下提交按钮时,会显示最近的10条推文。并且推文列表必须每15秒刷新一次。我用javascript和json成功访问了twitters数据库(只有公共推文)。但令人耳目一新的部分无法正常工作 这是我的javascript代码:

function f()
{
    var words = document.getElementsByTagName("input");
    words = words[0].value;

    json(words);
    setInterval(function(){
        json(words);
    }, 15000);
}

function json(words)
{
    $.getJSON("http://search.twitter.com/search.json?q="+words+"&rpp=10&callback=?", function(data){
        var results = data.results; 
        var tweet ='<div>';

        for(i=0; i<results.length; i++){
            var nickname = results[i].from_user;
            var text = results[i].text;

                tweet+='<b><p>'+nickname+'</p></b><br/>';
                tweet+='<p>'+text+'</p>';
        }
        tweet +='</div>';

        $('#tweets').html(tweet);
    });
}

当我按下提交按钮时,f函数被触发并调用json函数。我的问题是:例如,当我输入“chelsea”并按下提交按钮时,项目会显示结果并每15秒刷新一次。然后,如果我键入“manchester”并按下提交按钮,项目必须显示仅有“manchester”的结果。但它显示了关于“曼彻斯特”和“切尔西”的结果。它拥有旧的价值观。我怎样才能避免它们以及出了什么问题呢?

1 个答案:

答案 0 :(得分:1)

您需要清除之前的setInterval

你可以这样做:

var intv;
    function f()
    {
        clearInterval(intv);
        var words = document.getElementsByTagName("input");
        words = words[0].value;

        json(words);
        intv= setInterval(function(){
            json(words);
        }, 15000);
    }