关于AJAX请求服务器后缓存数据,造成没有及时刷新的问题

2023-11-06

最近在做项目的时候,使用了ajax去请求服务器的数据!刚开始还可以,我测试一切运行正常(我不是专业的测试人员哈!所以还是有些问题没有测出来哈)!后来ajax请求的数据变化了,但是页面数据没有变,依然是第一次的数据!这个问题害我整了好大半天啊![还是自己技术不到位啊!] 没办法遇到问题还是要解决啊!只有硬着头皮弄了撒! 因为ajax请求也是到后台页面执行的,那就断点吧! 嘿嘿,通过断点我发现了问题! 每次ajax请求他只有第一次去后台,后面的他就不会去后台了!如果你其他按钮把数据改变了,因为ajax第二次以后都不会去后台执行去数据了!所以数据没有及时刷新[数据被缓存了,如果你重启IE你修改的数据就可以看到了],有点希望了! 至少症状找到了撒!接下就是怎么解决这个问题啊! 嘿,后来和Bobby同事提醒我在ajax的请求url后面加一个时间戳参数试一试!  那就死马当活马医了!反正我也没有好的方法! 哈哈居然可以了! [在此感谢bobby](还是自己技术不到位啊!汗…) 后来去google了一下,多少人也遇到这个问题! 下面集自己的理解和网络上的一些资源解决这个问题!  [IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交。因此无法取到刚提交的数据]

我最初的做法: 下面的代码运行后! 第一次点击GetData按钮显示 demo , 当在点击changDate改变数据后, 在点击 GetData还是显示 demo !而不是我们期望的changed data 字符串! 这就是我最初遇到的问题! 当然下面只是一个简单的demo而没有太多的实际意义!

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="ajax_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script runat="server">
        private static string data = "demo";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack) return;
            if (!string.IsNullOrEmpty(Request.QueryString["ajax"]))
            {
                Response.Write(data);
                Response.End();
            }
        }

        protected void Unnamed1_Click(object sender, EventArgs e)
        {
            data = "Changed data";
        }
    </script>
    <script type="text/javascript">
        function createXmlHttpRequest() {
            if (window.ActiveXObject) {
                return new ActiveXObject("Microsoft.XMLHTTP");
            } else if (window.XMLHttpRequest) {
                return new XMLHttpRequest();
            }
        }
        function test() {
            //ajax请求地址,就是本页面哈
            var url = "Default.aspx?ajax=true";
            /*
                解决方法: var url = "Default.aspx?ajax=true&random=" + Math.random();
                         var url = "Default.aspx?ajax=true&random=" + new Date().getMilliseconds();
                后面跟一个随机数或者时间戳保证他请求的url每次都不一样!这样就不会被缓存
                2.在send()方法之前设置setRequestHeader
                  XMLHttpRequest.setRequestHeader("If-Modified-Since","0")
            */
            var xmlHttpRequest = createXmlHttpRequest();
            xmlHttpRequest.onreadystatechange = function() {
                if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {
                    var context = xmlHttpRequest.responseText;
                    document.getElementById("divInfo").innerHTML = context;
                }
            }
            xmlHttpRequest.open("GET", url, true);
            //xmlHttpRequest.setRequestHeader("If-Modified-Since","0");
            xmlHttpRequest.send(null);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <input id="getData" type="button" value="GetData" onclick="test();" />
    <div id="divInfo">
    
    </div>
    <asp:Button runat="server" Text="changDate" onclick="Unnamed1_Click" />
    </form>
</body>
</html>

 

上面的2种方法,我已测试通过!并解决了我的问题!

Technorati 标签: ajax

转载于:https://www.cnblogs.com/jinho/archive/2010/04/29/1724104.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于AJAX请求服务器后缓存数据,造成没有及时刷新的问题 的相关文章

随机推荐

  • 使用Requests库来进行爬虫的详解

    Requests是用Python编写 基于urllib 采用Apache2 Licensed开源协议的HTTP库 它比urllib更方便 可以节约我们大量的工作 完全满足HTTP测试需求 安装 pip3 install requests 使
  • 【知识普及】神经网络架构搜索(Neural Architecture Search,NAS)

    文章目录 1 背景引入 2 网络架构搜索 NAS 2 1 NAS 搜索策略 2 1 1 基于强化学习 2 1 2 基于进化算法 2 1 3 基于梯度的方法 2 2 NAS 加速 2 2 1 层次化表示 2 2 2 权值共享 2 2 3 表现
  • 教你一招删除休眠文件hiberfil.sys节省大量C盘空间

    教你一招删除休眠文件hiberfil sys节省大量C盘空间首先分清SLEEP睡眠和HIBERNATE休眠两个概念 我们常用的是SLEEP功能 也就是电脑经过一定时间后 进入低功耗状态 工作态度保存在内存里 恢复时1 2秒就可以恢复原状态
  • 最新配置安装的centos7,解决xshell连接问题,安装docker

    配置初始的centos7 1 更新yum yum update y 2 安装vim yum install y vim 3 解决xshell连接显示警告 The remote SSH server rejected X11 forwardi
  • 用深度学习和CNN进行年龄识别

    DIP大作业 用深度学习和CNN进行年龄识别 基于深度学习的方法 基本步骤 深度学习方法 1 10 需求分析 系统设计 环境搭建 2 10 数据集及预处理 3 40 卷积神经网络模型设计 模型程序编写 模型训练 模型测试 4 30 实验结构
  • OpenWRT安装管理界面中文包

    如果刚刷的openwrt18点多的没有中文界面 用ssh连接路由后用opkg安装 root openWRT opkg install luci i18n base zh cn Unknown package luci i18n base z
  • 顺序栈——基础

    时间限制 1000ms 内存限制 256M 实验目的 编写代码 实现一个简单的顺序栈 实验要求 1 每个栈元素是一个union类型 例如 union unData 栈元素的数据类型为Union Union共用同一块存储空间 int d ch
  • 分布式任务 + 消息队列框架 go-queue

    为什么写这个库 应用场景有哪些 如何使用 总结 为什么要写这个库 在开始自研 go queue 之前 针对以下我们调研目前的开源队列方案 beanstalkd beanstalkd 有一些特殊好用功能 支持任务priority 延时 del
  • 文献学习-联合抽取C-Joint Extraction of Biomedical Entities and Relations based on Decomposition and Recombio

    论文信息 1 题目 Joint Extraction of Biomedical Entities and Relations based on Decomposition and Recombination Strategy 基于分解重组
  • QT 编码格式问题

    一 QT客户端与服务端通信 客户端先将数据进行序列化xml形式 然后利用SharpZipLib GZip Compress进行压缩 转换成Base64格式 源数据 Function GetSysTime IsMutipleReturn fa
  • 脑筋急转弯-3

    小明爱捉迷藏 却总被人找得到 为什么 答案 因为他总是喊着 我在这里 什么东西你越给它 它变得越短 答案 蜡烛 小华拿着空杯子站在雨中 为什么他的头发却没有湿 答案 因为小华是个雨伞销售员 他用雨伞遮住了头发 什么桥不能过 答案 音乐桥 因
  • spring cloud gateway集成sentinel并扩展支持restful api进行url粒度的流量治理

    sentinel集成网关支持restful接口进行url粒度的流量治理 前言 使用网关进行总体流量治理 sentinel版本 1 8 6 1 cloud gateway添加依赖 2 sentinel配置 3 网关类型项目配置 4 通过zk事
  • VUE之Vxe-table动态生成多级表头及后端返回数据的处理

    需求 1 第一列为正常列 2 第二列开始为动态生成列 根据接口返回数据生成 3 最后一列为编辑列 步骤 写入动态html模板
  • 接口响应优化方案

    最近收到客户反映系统卡顿严重 然后让他截图看了下 最长响应时长居然高达16s 其他3s 4s的接口一大堆 简直是恐怖 简单来说 这个耗时16s的接口其实是统计一张历史数据表里的数据 这张表大概有三百多万条数据 日增长1万左右 因为客户要求最
  • C++(10)——友元

    友元 采用类的机制后实现了数据的隐藏与封装 类的数据成员一般定义为私有成员 成员函数一般定义为公有的 依此提供类与外界间的通信接口 但是 有时需要定义一些函数 这些函数不是类的一部分 但又需要频繁地访问类的数据成员 这时可以将这些函数定义为
  • xss漏洞简单案例

    目录 一 function render input return input 二 function render input return input 编辑 三 function render input return 四 functio
  • 测试老鸟常用的自动化测试工具有哪些?

    目录 一 自动化测试工具的类型 二 自动化测试工具有哪些 1 Selenium 2 Appium 3 Jmeter 4 Postman 5 SoapUI 6 Monkey 7 Robot Framework 8 QTP 9 LoadRunn
  • JS实现去除一个字符串中的所有标点和空格

    这是今天做练习的时候碰到的 有两种办法 一是先将要处理的字符串分割成数组 再用filter滤去数组中的标点和空格 filter对于回调函数返回true的项会保留在数组中 返回false的会被滤出数组 最后再把数组转成字符串 下面是实现方法
  • lol韩服服务器满了显示什么意思,LOL韩服再次回收超级账号,“rank分出现问题,针对LPL的选手吗”...

    前言 S11赛季的比赛正在如火如荼地进行中 相信绝大多数的玩家都关注了 最近一段时间的春季赛 lpl赛区和lck赛区的整体状态是非常不错的 因为今年msi在冰岛举办 所以很多的赛区都希望能够拿下这一次的冠军 如果不出意外的话 dwg战队应该
  • 关于AJAX请求服务器后缓存数据,造成没有及时刷新的问题

    最近在做项目的时候 使用了ajax去请求服务器的数据 刚开始还可以 我测试一切运行正常 我不是专业的测试人员哈 所以还是有些问题没有测出来哈 后来ajax请求的数据变化了 但是页面数据没有变 依然是第一次的数据 这个问题害我整了好大半天啊