根据json更新html

时间:2015-03-01 11:35:51

标签: javascript jquery ajax json

我有一个包含实时匹配的JSON脚本。这些变化每5分钟一次。例如,更改可以是键live_in或得分。除此之外,还会删除匹配并添加到JSON中。我想保持我的html输出始终更新我怎样才能以最好的方式做到这一点?到目前为止,我已将更新速度设置为5秒以进行测试。到目前为止,我已尝试将divs id设置为等于match_id,从而通过

进行更新
    $('div#match-date-id-' + match['match_id']).html('test');

但似乎没有更新。我怎样才能以最好的方式做到这一点?我已经创建了一个plnkr,您可以使用json片段下载它,可以对其进行编辑以进行检查。

plnkr.co/edit/eQCShhW01OG5jU4VLx04?p=preview

1 个答案:

答案 0 :(得分:0)

我之前的不好:-)现在我已经做了更彻底的测试,并且更新了 plunker code。我在测试中发现:filter试图使用 undefined 值(match.id),过滤器也试图比较不同数据类型的值(字符串整数);所以它没有按预期工作:

原件:

   match = match.filter(
      function(match) {
        return match.id > lastId;
   });

更正后的代码:

    match = match.filter(
        function(match) {
          return parseInt(match.match_id) > lastId;
     });

高于match_id表示JSON文件中的String数据类型,因此我必须在比较之前将其转换为 Integer 。有关更多信息JSON data-types。遵循较早的filter功能,没有匹配通过比较测试。

同样出于测试目的,我注释掉以下内容:

        if (match.match_id > lastLoadedMatch) {
           //lastLoadedMatch = match.match_id
        }

因为在具有相同测试数据的第二轮更新中,没有数据通过该条件。

此外,我认为您还需要将match_id转换为 Integer ;如下:

        var matchId = parseInt(match.match_id)
        if ( matchId > lastLoadedMatch) {
           lastLoadedMatch = match.match_id
        }

我希望你觉得它很有用:-) + note我为这些更新添加了一个时间戳;因此,可以清楚地看到更新现在每5秒发生一次。