您如何div使用JavaScript(特别是jQuery)进行自动刷新?
div
我知道这种setTimeout方法,但这真的是一个好习惯吗?有没有更好的方法?
setTimeout
function update() { $.get("response.php", function(data) { $("#some_div").html(data); }); window.setTimeout("update();", 10000); }
另一个修改:
function update() { $.get("response.php", function(data) { $("#some_div").html(data); window.setTimeout(update, 10000); }); }
与此不同的是,ajax调用为1之后,它将等待10秒。因此,刷新之间的时间间隔实际上是10秒+ ajax调用的长度。这样做的好处是,如果您的服务器花费的时间超过10秒,则不会同时发生两个(最终很多)同时的AJAX调用。
另外,如果服务器无法响应,它将不会继续尝试。
过去,我曾使用过类似的方法,使用.ajax处理更复杂的行为:
function update() { $("#notice_div").html('Loading..'); $.ajax({ type: 'GET', url: 'response.php', timeout: 2000, success: function(data) { $("#some_div").html(data); $("#notice_div").html(''); window.setTimeout(update, 10000); }, error: function (XMLHttpRequest, textStatus, errorThrown) { $("#notice_div").html('Timeout contacting server..'); window.setTimeout(update, 60000); } }
这显示了加载时的加载消息(将动画gif放入其中,以显示典型的“ web 2.0”样式)。如果服务器超时(在这种情况下花费的时间超过2秒)或发生任何其他类型的错误,则表明错误,并等待60秒,然后再次联系服务器。
在与大量用户进行快速更新时,这尤其有用,因为您不希望每个人都突然使请求始终超时的落后服务器瘫痪。