You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AJAX表单提交后如何设置延迟刷新并正确添加加载进度条?

AJAX表单延迟刷新与进度条实现方案

1 延迟4秒刷新功能问题修复

你现有代码的setTimeout(cbutton, 4000)逻辑是AJAX请求成功后4秒重新调用提交函数,而非执行页面刷新,因此无法实现预期效果,需将setTimeout的回调替换为页面刷新逻辑。

2 加载进度条实现说明

进度条不需要放在function (msg)之后,正确的触发逻辑是:

  • AJAX请求发起前显示进度条
  • 请求过程中更新进度
  • 请求完成后先让进度条走满,再执行延迟刷新逻辑

2.1 新增HTML进度条结构

你可以把这段代码放在页面顶部或者表单附近的任意位置,默认状态隐藏:

<div id="loading-bar" style="display: none; height: 4px; background: #1890ff; position: fixed; top: 0; left: 0; width: 0; z-index: 9999; transition: width 0.2s linear;"></div>

3 完整修改后的JS代码

var barray = [];

function cbutton() {
  // 补充接收单选框值的变量,修复原有代码无接收的问题
  const submitUrl = $('input:radio[name="cheking"]:checked').val();
  var varies = $("#fromdate").val();
  var varies2 = $("#todate").val();
  if (varies == "" || varies2 == "") {
    alert("Please fill in all 2 fields first and then submit again");
  } else {
    barray.push(varies + "~" + varies2);
    // 请求发起前初始化并显示进度条
    const $loadingBar = $('#loading-bar');
    $loadingBar.show().css('width', '0%');
    let progress = 0;
    // 模拟加载进度更新
    const progressTimer = setInterval(() => {
      progress += Math.random() * 15;
      if (progress > 80) progress = 80;
      $loadingBar.css('width', progress + '%');
    }, 200);

    $.ajax({
      type: "POST",
      url: submitUrl,
      data: {
        fromdate: varies,
        todate: varies2
      }
    }).done(function(msg) {
      // 请求成功后进度条走满
      clearInterval(progressTimer);
      $loadingBar.css('width', '100%');
      // 等待进度条动画完成后隐藏,再执行4秒延迟刷新
      setTimeout(() => {
        $loadingBar.hide();
        setTimeout(() => {
          window.location.reload();
          // 如果仅需要局部刷新,可替换上面的页面刷新逻辑为你的局部数据更新代码
        }, 4000);
      }, 100);
    }).fail(function() {
      // 请求失败的兼容处理
      clearInterval(progressTimer);
      $loadingBar.css('width', '100%').hide();
      alert('请求失败,请重试');
    });
  }
}

内容的提问来源于stack exchange,提问作者stoperan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:09:00