javascript - 我每秒执行一次 Ajax 调用,但如果内容发生更改,我将替换图像源。这会导致图像破裂
问题描述
我有来自 LastFM 的广播。所以为了保持更新,我必须每秒发送一次 ajax 调用。如果数据发生变化,我的图像源和标题都应该改变。但在我的情况下,标题更改并且图像中断。
$.ajax({
url: 'urltolastfm',
success: function(data) {
if ($('#thumbnail').attr('src') !== data.recenttracks.track[0].image[3]['#text']) {
$('#thumbnail').hide();
$('#thumbnail').attr('src', data.recenttracks.track[0].image[3]['#text']); // this is where i change the source
$('#thumbnail').show();
}
}
});
解决方案
实际的错误是我在加载页面时进行了 ajax 调用,然后每隔一秒就进行 ajax 调用,并使用数据更改段落行。导致数据溢出。所以我创建了一个单一的 ajax 调用作为一个函数,然后使用超时来调用它。
function checkThumbnail() {
if ($('#thumbnail').length > 0) {
return true;
} else {
return false;
}
}
function fetchdata() {
$.ajax({
url: 'https://ws.audioscrobbler.com/2.0/?method=user.getRecentTracks&user=evillarreal42&api_key=6c7cf66516c75e782226590e933f6c6b&format=json&limit=1',
success: function(data) {
if ($('#thumbnail').attr('src') !== data.recenttracks.track[0].image[3]['#text']) {
$('#lastfm').empty().append(
'<h6 class="marg" style="margin-bottom:10px; text-align:center;"><span class="mon" style="color:black; text-align:center">● Now playing → "' +
data.recenttracks.track[0].name + '" by ' + data.recenttracks.track[0]
.artist['#text'] + ' from ' + data.recenttracks.track[0].album[
'#text'] + ' </span></h6>');
if (!checkThumbnail()) {
$('#foot').fadeToggle( "slow", "linear" );
var img = $('<img id="thumbnail">'); //Equivalent: $(document.createElement('img'))
img.attr('src', data.recenttracks.track[0].image[3]['#text']);
img.css({
"position": "absolute",
"top": "50%",
"left": "50%",
"width": "250px",
"height": "250px",
"margin-top": "-125px",
/* Half the height */
"margin-left": "-125px",
"display": "none",
"z-index": "22" /* Half the width */
});
img.appendTo('.bgg');
} else {
$('#thumbnail').attr('src', data.recenttracks.track[0].image[3]['#text']);
}
}
}
});
}
$(document).ready(function() {
setInterval(fetchdata, 1000);});
推荐阅读
- ionic-framework - Ionic Capacitor Deep links (appUrlOpen) 事件运行多次 10+
- oop - 如何在不把代码库弄得一团糟的情况下添加大规模的特定于类的行为?
- python - 检查当前 python 代码是否从包中运行
- flutter - 使appbar与body颜色一致
- javascript - 我想将多个文件上传到 firebase,然后将数据上传到 firebase
- .net - 如何使用 dotnet 自定义模板重命名文件夹?
- r - 如何在 colnames R 中允许特殊字符(葡萄牙语)
- r - 如何更改时间序列图中的 x 轴刻度(年到月)?
- python - http.client.RemoteDisconnected:当函数调用自身时,远程结束关闭连接而没有响应
- .net-core - Redis 背板 - 大数据量的 AddStackExchangeRedis