Javascript 根据json更新html
我有一个包含实时匹配的JSON脚本。这些变化每5分钟一次。例如,这些变化可能是现场直播或分数。除此之外,还将删除匹配项并将其添加到JSON中。我想随时更新我的html输出如何才能做到最好?到目前为止,出于测试目的,我已经将更新速度设置为5秒。到目前为止,我已尝试将divs id设置为等于match_id,从而通过Javascript 根据json更新html,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我有一个包含实时匹配的JSON脚本。这些变化每5分钟一次。例如,这些变化可能是现场直播或分数。除此之外,还将删除匹配项并将其添加到JSON中。我想随时更新我的html输出如何才能做到最好?到目前为止,出于测试目的,我已经将更新速度设置为5秒。到目前为止,我已尝试将divs id设置为等于match_id,从而通过 $('div#match-date-id-' + match['match_id']).html('test'); 然而,似乎没有更新。我怎样才能做到最好?我已经创建了一个p
$('div#match-date-id-' + match['match_id']).html('test');
然而,似乎没有更新。我怎样才能做到最好?我已经创建了一个plnkr,它可以让您下载一个json片段,可以对其进行编辑以进行检查
plnkr.co/edit/eQCShhW01OG5jU4VLx04?p=preview我之前的坏消息:-)现在我已经做了更彻底的测试,并更新了。我在测试中发现:过滤器
试图使用未定义的值(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文件中的字符串数据类型,所以我必须在比较之前将其转换为整数。更多关于JSON的信息。使用较旧的过滤器
功能后,没有匹配项通过比较测试
出于测试目的,我还注释了以下行:
if (match.match_id > lastLoadedMatch) {
//lastLoadedMatch = match.match_id
}
因为在使用相同测试数据的第二轮更新中,没有数据通过该条件
此外,我认为还需要将match_id
转换为整数;例如:
var matchId = parseInt(match.match_id)
if ( matchId > lastLoadedMatch) {
lastLoadedMatch = match.match_id
}
我希望你觉得它有用:-)注意我为这些更新添加了一个时间戳;很明显,现在每5秒更新一次。阅读您的代码时,我有点不知所措。你能压缩你的代码,使它是最少量的代码,但仍然包含问题吗?我看了一下,你的ID通常是这样的:等等。在json数据“match_id”中:“65551”是数字,所以我认为在使用上面的jQuery选择器时不存在匹配。所以很难进行更新。好的,是的,很明显我这边的错误,我现在更新了。然而,即使我更改了JSON中的live in键,您的ajax代码肯定正在运行,它现在似乎也没有更新live in。我认为问题在于你的选择者。首先,大多数html ID都写错了。您的id是这样的:“match-date-id-1m 36”。ID中不能包含空格。同样,在选择器中,您试图检测以下内容:“#match-date-id-67843”,但HTML中没有匹配的内容。在函数matchHtml(obj,type)中,您使用以下代码创建div:HTML+=”;您是否应该使用obj['match_id']而不是obj['live in']?好的,您可以发送一份plnkr,说明您用于工作的确切脚本吗?因为它在我的系统中仍然不起作用?@PeterPik这里是JSON数据的前4个“live in”键被更改为“live_in”的地方,plnkr会在每次您更改JSON或其他内容时更新,所以确保它不只是为此工作?因为它在我的服务器上不工作?不updating@PeterPik隐马尔可夫模型。。这是我第一次编辑plunker代码示例,所以我想可能会有一些问题,但我试图通过替换…html(match['live in'])中的空格来编辑您的原始代码示例;在json数据中分别使用下划线u和and,我能够获得更新。不管怎样,我今天就到此为止。祝你好运@彼得皮克更新了答案。看起来这是一个过滤器问题。