laravel-admin 无感知刷线自定义时间设置
/* ====================== 终极零报错·纯AJAX无感刷新 START ====================== */
// 1. 顶部工具栏
$grid->tools(function ($tools) {
$tools->append('
<div class="pull-left" style="margin:0 15px;display:flex;align-items:center;gap:5px;">
<input type="number" id="refresh_sec" placeholder="刷新秒数" min="2"
class="form-control input-sm" style="width:90px;">
<button id="start_refresh" class="btn btn-sm btn-success">启动无感刷新</button>
<button id="stop_refresh" class="btn btn-sm btn-warning">停止刷新</button>
</div>
');
});
// 2. 核心JS:纯AJAX刷新表格(零依赖·无任何报错)
$grid->footer(function () {
echo <<<JS
<script>
let autoRefreshTimer = null;
// 页面加载自动恢复刷新
$(function() {
const saveSeconds = localStorage.getItem('auto_refresh_seconds');
if (saveSeconds && saveSeconds >= 2) {
startRefresh(saveSeconds);
}
});
// ✅ 核心:纯AJAX局部刷新表格数据(页面完全不动,无任何报错)
function refreshTable() {
// 直接请求当前页面,提取表格内容替换(全版本通用)
$.get(window.location.href, function(data) {
var newTable = $(data).find('.box-body.table-responsive');
$('.box-body.table-responsive').html(newTable.html());
});
}
// 启动刷新
function startRefresh(seconds) {
stopRefresh();
localStorage.setItem('auto_refresh_seconds', seconds);
// 定时AJAX刷新表格
autoRefreshTimer = setInterval(refreshTable, seconds * 1000);
}
// 停止刷新
function stopRefresh() {
if (autoRefreshTimer) {
clearInterval(autoRefreshTimer);
autoRefreshTimer = null;
}
localStorage.removeItem('auto_refresh_seconds');
}
// 按钮事件
$('#start_refresh').click(function() {
const sec = $('#refresh_sec').val();
if (!sec || sec < 2) {
alert('请输入≥2的秒数!');
return;
}
startRefresh(sec);
alert('已开启 ' + sec + ' 秒无感自动刷新');
});
$('#stop_refresh').click(function() {
stopRefresh();
alert('已停止无感刷新');
});
</script>
JS;
});
/* ====================== 终极零报错版 END ====================== */
最近访问时间:2026-03-27 16:31:07