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

JQuery append结合setInterval无法重复追加内容问题排查

问题分析与解决方案

你遇到的问题核心大概率是浏览器AJAX请求缓存导致的——虽然你看到控制台每3秒发起了POST请求,但浏览器可能缓存了第一次的响应结果,后续请求直接返回缓存内容,所以你看不到新的时间戳。

具体解决办法

方法1:在AJAX请求中禁用缓存并添加唯一标识

修改你的JavaScript代码,给AJAX请求添加cache: false配置,或者额外带上一个随时间变化的参数(比如当前时间戳),让每次请求的“唯一标识”不同,避免浏览器缓存:

$(document).ready(function() {
    function load_friend_request() {
        $.ajax({
            url: "/friend_requests_main_loader.php",
            type: 'POST',
            cache: false, // 强制禁用缓存
            data: { timestamp: new Date().getTime() }, // 添加时间戳参数,确保请求唯一
            success: function(html) {
                $("#friend_request").append(html);
            }
        })
    }
    setInterval(function() {
        load_friend_request();
    }, 2000); // 注意你代码里是2秒,和你描述的3秒不一致,可按需调整
});

方法2:在PHP脚本中设置禁止缓存的响应头

直接在PHP代码开头添加缓存控制的响应头,从服务器层面禁止浏览器缓存这个接口的结果:

<?php
// 禁止浏览器和代理缓存响应
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");

echo time();
?>

验证步骤

你可以打开浏览器开发者工具的「Network」标签,查看每次AJAX请求的「Response」内容:如果之前每次返回的时间都是同一个,那就是缓存问题;修改后应该每次返回不同的时间戳,append也会正常追加新内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:40:48