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

为何jQuery .load()请求无法被.ajaxStop()处理器识别?

问题分析与解决方案

可能原因1:请求被浏览器缓存

当浏览器缓存了.load()请求的响应时,jQuery可能不会走完整的AJAX请求流程,导致ajaxStop事件未触发。可以通过以下方式禁用缓存:

  • 在请求URL后添加随机参数,避免命中缓存:
    $("#js-table-trades").load("/trades/list/?t=" + Date.now(), function (response, status, xhr) {
        console.log("Loading is done...");
    });
    
  • 全局禁用AJAX缓存,对所有AJAX请求生效:
    $.ajaxSetup({ cache: false });
    

可能原因2:存在未完成的其他AJAX请求

ajaxStop事件只有在所有AJAX请求都完成时才会触发。如果页面中还有其他处于pending状态的AJAX操作(比如定时轮询的接口),会导致加载层无法隐藏。检查页面中是否有其他未完成的AJAX请求,确保所有请求都能正常结束。

可能原因3:全局AJAX事件被禁用

如果之前通过$.ajaxSetup({ global: false })禁用了全局AJAX事件,.load()作为封装的AJAX方法也不会触发ajaxStart/ajaxStop。检查代码中是否有类似设置,若存在则移除该配置,或针对特定请求单独开启全局事件。

兜底解决方案

既然.load()的回调函数已经能正常执行,可在回调中手动处理加载层隐藏,确保无论全局事件是否触发都能正常关闭加载状态:

$("#js-table-trades").load("/trades/list/", function (response, status, xhr) {
    console.log("Loading is done...");
    $("#loading-overlay").removeClass("d-flex").addClass("d-none").hide();
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 00:25:25