Jquery ajax 如何更新 html 元素而不侦听每隔 x 秒更新一次


Jquery ajax how to update html element without listening for updates every x second?

有没有办法在不使用setInterval的情况下检查数据库中的新更新?问题是我想更新视频标签中的视频源,但如果我每秒检查更新,那么我的视频会不断刷新。我只希望数据库更新时刷新视频。例如,如果我在数据库的current_video列中有一个猫视频,那么猫视频应该播放。否则,如果我将视频更新为狗视频,则只有这样,视频元素才会更改为狗视频。

$.get("/musicmania/playing/getCurrentSongDir", function(data, status){
    setInterval(function(){
            $("#video").html("<source src='/musicmania/app/resources/"   
            + data + "' type='video/mp4'></source>");
    }, 500);
});

您可以添加if语句并检查旧数据和新数据是否不相等,然后刷新视频。您的代码将如下所示。

var old_data='';
$.get("/musicmania/playing/getCurrentSongDir", function(data, status){
   if( old_data != data ) {
       $("#video").html("<source src='/musicmania/app/resources/"   
        + data + "' type='video/mp4'></source>");
   }
   old_data = data;
});

如果你想通过ajax技术做到这一点,你必须每"x"秒发送一次请求。但是还有另一种技术叫做websockets。如果您不想每"x"秒打开一次与服务器端的连接,则可以使用 websockets。