Checkbox選中 → 每10秒自動刷新當前查詢結果;取消選中 → 停止刷新。要求無閃爍(AJAX局部更新)。
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<input type="checkbox" onclick="toggleAutoRefresh(this)" /> 定時刷新
<script>
var refreshTimer;
var REFRESH_INTERVAL = 10000; // 10秒
function toggleAutoRefresh(cb) {
if (cb.checked) {
// 啟動定時器
refreshTimer = setInterval(function() {
// AJAX無閃爍刷新
$('#contentArea').load('queryResults.jsp?timestamp=' + Date.now());
}, REFRESH_INTERVAL);
// 立即執行一次
$('#contentArea').load('queryResults.jsp');
} else {
// 停止定時器
clearInterval(refreshTimer);
}
}
</script>
<div id="contentArea">初始加載內容...</div>
<%@ page contentType="text/html;charset=UTF-8" %>
<%
// 僅返回片段HTML,不要包含等標簽
String condition = request.getParameter("condition");
List list = service.query(condition);
%>
<table>
<c:forEach items="${list}" var="item">
<tr><td>${item.name}</td><td>${item.value}</td></tr>
</c:forEach>
</table>
loading標誌,請求未返回時忽略新觸發.load()失敗時指數退避重試$('#form').serialize()隨請求發送.load(url)的url必須返回純HTML片段,不能包含完整頁面結構Date.now()或隨機數防緩存clearIntervalwindow.onbeforeunload = () => clearInterval(refreshTimer)核心模式:Checkbox狀態 → 啟動/停止定時器 → AJAX局部更新,jQuery.load()是最簡潔實現。