在一个间隔刷新json并显示结果而不刷新页面

时间:2013-01-14 18:24:10

标签: javascript jquery

我有一个类似你在下面看到的JSON,我想“保持活力”。我想不断查询服务器(连续间隔“刷新”,比如30秒)并相应地更新页面上显示的内容。 JSON如下所示:

[
        {
            "Name": "Paul",
            "Date": "2012-10-26",
            "Score": 8
        },
        {
            "Name": "Janet",
            "Date": "2012-10-24",
            "Score": 18
        },
        {
            "Name": "Rick",
            "Date": "2012-10-26",
            "Score": 13
        }
]

我要显示的当前(静态)版本是:

<body>
<script>
$.getJSON('myjson.json', function(data) {
for (var i in data) {
var Name = data[i].Name;
var Score = data[i].Score;
}           
var output = "<ul>";
for (var i in data) {
output += "<li>" + Name + "--" + Score;
}
output += "</ul>";
document.getElementById("placeholder").innerHTML=output;
});
</script>
<div id="placeholder"></div>
</body>

这当然会显示数据,但是当json在服务器上更改时(不刷新页面),如何将更改“流式传输”为“得分”?

这是什么被称为民意调查?

感谢任何帮助。谢谢

2 个答案:

答案 0 :(得分:1)

您只需要使用计时器,或者更具体一点,setInterval() ...

<script>
    function getData() {
        $.getJSON('myjson.json', function(data) {
            for (var i in data) {
                var Name = data[i].Name;
                var Score = data[i].Score;
            }           
            var output = "<ul>";
            for (var i in data) {
                output += "<li>" + Name + "--" + Score;
            }
            output += "</ul>";
            document.getElementById("placeholder").innerHTML=output;
        });
    }
    setInterval(getData, 30000);

    $(function() {
        getData();
    });
</script>

上述脚本将在document.ready运行getData()函数,然后每30秒运行一次,并使用返回值更新#placeholder元素。

答案 1 :(得分:0)

没有任何铃声或口哨声,您可以将整个事物包装在一个函数中,然后使用setIntervalsetTimeout调用它,以便它以给定的间隔运行代码。

基本示例:

function getData(){
  ... your code ...

  setTimeout( getData, 3000 ); // Get data and refresh page every 3000 ms (3 seconds)
}

//调用函数启动数据收集

getData();