从JSON获取的数据未获得更新

时间:2012-11-12 16:22:28

标签: javascript jquery json

以下是剧本:

$(document).ready(function () {
    $.getJSON('table.json', function (data) {
        $('#mytable').empty();
        var html = '';
        html += '<tr class="tableheader"><th>Name</th><th>Code</th><th>Value</th><th>Bid</th><th>Offer</th></tr>';
        for (var i = 0, size = data.length; i < size; i++) {
            html += '<tr class="tablecontent"><td>' + data[i].name + '</td><td>' + data[i].code + '</td><td>' + data[i].value + '</td><td>' + data[i].bid + '</td><td>' + data[i].offer + '</td></tr>';
        }
        $('#mytable').append(html);
        tablerows('mytable');
        setTimeout(poll, 5000);
    });
});
var poll = function () {
    alert("poll");
    $.getJSON('dummy.json', function (data) {
        setTimeout(poll, 5000);
    });
}

我想更新我的数据。我通过poll检查后每隔5秒调用alert函数。但数据没有得到更新。请告诉我我做错了什么。

2 个答案:

答案 0 :(得分:1)

getJSON是一个GET请求,因此它将被缓存。在服务器上设置正确的无缓存标头。

同时查看您的代码,您永远不会处理数据

var poll = function () {
    alert("poll");
    $.getJSON('dummy.json', function (data) {
        setTimeout(poll, 5000);  //<--where is the processing you do nothing with the response???
    });
} 

答案 1 :(得分:1)

$(document).ready(function() {
       // make the initial JSON request
    $.getJSON('table.json', init)
});

function poll() {
       // make the subsequent JSON requests
    $.getJSON('dummy.json', update);
}

function init(data) {
    $('#mytable').empty();
    var html = '';
    html += '<tr class="tableheader"><th>Name</th><th>Code</th><th>Value</th><th>Bid</th><th>Offer</th></tr>';
    for (var i = 0, size = data.length; i < size; i++) {
        html += '<tr class="tablecontent"><td>' + data[i].name + '</td><td>' + data[i].code + '</td><td>' + data[i].value + '</td><td>' + data[i].bid + '</td><td>' + data[i].offer + '</td></tr>';
    }
    $('#mytable').append(html);
    tablerows('mytable');
    setTimeout(poll, 5000);
}

function update(data) {
    var rows = $("#mytable tr.tablecontent").toArray();
    for (var i = 0, size = data.length; i < size; i++) {
        if (rows[i])
            rows[i].cells[3].firstChild.data = data[i].bid;
    }
    setTimeout(poll, 5000);
}

这是带有更多jQuery的update函数:

function update(data) {
    $("#mytable tr.tablecontent > td:nth-child(4)")
         .slice(0, data.length)
         .text(function(i) {
             return data[i].bid;
          });
    setTimeout(poll, 5000);
}