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

无法修改插件时,如何在特定AJAX请求完成后执行JS函数?

实现方法:检测插件AJAX筛选请求完成

完全可以实现,下面提供两种靠谱的方案,不用修改插件代码就能捕获特定AJAX请求的完成事件:

方案一:用jQuery全局AJAX事件(适合插件用jQuery发起请求的情况)

利用jQuery的ajaxComplete全局事件,它会在所有AJAX请求完成后触发,我们只需要在回调里判断当前请求是不是目标筛选请求即可。

操作步骤:

  1. 打开浏览器开发者工具(F12),切换到「Network」标签,筛选「XHR」类型;
  2. 触发插件的筛选功能,找到对应的AJAX请求,查看请求的Form Data里的action参数值(比如可能是plugin_post_filter);
  3. 用下面的代码替换对应的参数:
$(document).ready(function() {
    $(document).ajaxComplete(function(event, xhr, settings) {
        // 匹配目标AJAX请求:检查请求数据里是否包含插件的action参数
        if (settings.data && settings.data.includes('action=plugin_post_filter')) {
            console.log("筛选AJAX已完成");
            activatePopup(); // 执行你的自定义函数
        }
    });
});

如果想更精准,还可以结合响应内容判断,比如检查响应里是否包含筛选后文章容器的类名:

if (settings.data.includes('action=plugin_post_filter') && xhr.responseText.includes('.filtered-posts-wrap')) {
    // 执行你的逻辑
}

方案二:原生JS监听所有XMLHttpRequest请求(兼容所有情况)

如果插件没有用jQuery发起AJAX,就用原生JS重写XMLHttpRequest的send方法,全局监听请求完成事件。

示例代码:

document.addEventListener('DOMContentLoaded', function() {
    const originalSend = XMLHttpRequest.prototype.send;
    XMLHttpRequest.prototype.send = function(body) {
        this.addEventListener('load', function() {
            // 匹配目标请求:检查请求URL是WP的AJAX接口,且请求数据包含目标action
            if (this.responseURL.includes('wp-admin/admin-ajax.php') && body && body.includes('action=plugin_post_filter')) {
                console.log("筛选AJAX已完成");
                activatePopup(); // 执行你的自定义函数
            }
        });
        originalSend.call(this, body);
    };
});

注意事项:

  • 一定要替换代码里的action=plugin_post_filter为你实际找到的插件筛选请求的action值;
  • 把代码放在主题的footer.php里(</body>标签前),或者通过主题的自定义JS功能添加;
  • 测试时可以先打印settings.data(方案一)或body(方案二),确认判断条件的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:52:13