我有一个DIV,它是在doc ready上的$ .get数据中填充的,然后我每隔5秒调用一次setInterval。我想尝试做的是setInterval $ .get的成功,如果#are_friends的html数据与以前一样,什么都不做,但如果它不同,那么再次将数据加载到#are_friends。
有没有人知道我会如何做到这一点,或者比我试图实施更好的方式。
<div id="are_friends"></div>
<script type="text/javascript">
$(document).ready(function() {
$.get('<?php echo $siteUrl ?>are_friends.php?userid=<?php echo $userid; ?>', function(data) {
$("#are_friends").html(data);
});
var auto_refresh = setInterval(
function ()
{
$.ajax({
url: "<?php echo $siteUrl ?>are_friends.php?userid=<?php echo $userid; ?>",
success: function(newdata){
var oldcontent = $("#are_friends").html();
if(oldcontent != newdata) {
$("#are_friends").html(newdata);
}
}
});
}, 5000); // refresh every 5000 milliseconds
});
</script>
答案 0 :(得分:0)
至少,您可以重用获取数据的函数,如下所示:
function getData(callback)
{
$.ajax({
url: "<?php echo $siteUrl ?>are_friends.php?userid=<?php echo $userid; ?>",
success: function(newdata){
callback(newdata);
}
});
}
$(document).ready(function()
{
getData(function(data)
{
$("#are_friends").html(data);
});
var auto_refresh = setInterval(function ()
{
getData(function(newdata)
{
if($("#are_friends").html() != newdata) {
$("#are_friends").html(newdata);
}
});
}, 5000);
});
实际上,初始调用和后续调用是一样的,为什么不重用呢?
答案 1 :(得分:0)
这与您正在处理的数据有很大关系。现在你只是生产了很多无用的交通工具。当你请求are_friends.php时,我建议发送一些当前状态的标记。 PHP将检查是否使用该标记更改了某些内容并返回“无更改”或更新的HTML。如果没有任何更改且交通更少,则应在此期间降低服务器负载(假设大多数请求将返回“无更改”)。但是又一次。这取决于你在are_friends.php中做了什么,你需要什么数据等等。