分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

ajax缓存问题

发布时间:2023-09-06 01:40责任编辑:傅花花关键词:缓存

今天在做一个需求的时候,发现在IE下面通过AJAX获取到的数据和服务器里面的数据不一致,最开始我以为是数据库连接工具的事物没有提交,但是当我提交事物以后,这个问题照样继续,然后我打开IE的开发者工具,将这个AJAX的请求捕获,发现在IE下面他从缓存中获取了数据,没有发起新的请求。

原因

使用GET方法时,如果请求参数相同,则浏览器会认为是同一个请求并且请求结果是一样的,所以存在缓存那么浏览器就优先返回缓存的结果,使用POST则不会出现这种情况。

解决方法:

  1. 使用POST方法。
  2. 在请求参数的后面加一个随机数或者时间戳。

    var url = "/webtest/Data.jsp?t=" + new Date().getTime();
  3. 后台的响应设置缓存控制的响应头。对于jsp或者servlet设置如下。

    response.setHeader("Cache-Control", "no-cache,no-store");

4.在使用jQUery下使用jQuery.ajax( url [, settings ]),设置cache参数为false。

5.其他方法待续。

测试用JSP代码

测试用前台页面

<%@ page language="java" contentType="text/html; charset=UTF-8" ???pageEncoding="UTF-8"%><html><body> ???<h2>Hello World!</h2> ???<script type="text/javascript" src="/webtest/static/jquery.min.js"></script> ???<button id="btn">获取数据</button> ???<hr> ???<h2 id="show"></h2></body><script type="text/javascript"> ???$(function() { ???????$("#btn").click(function() { ???????????var url = "/webtest/Data.jsp?"; ???????????$.get(url, function(res) { ???????????????$("#show").text(JSON.stringify(res)); ???????????}, ‘json‘); ???????}); ???});</script></html>

返回数据页面

<%@ page language="java" contentType="text/html; charset=UTF-8" ???pageEncoding="UTF-8"%><% ???response.setContentType("application/json"); ???String data = "300"; ???String name = "oops"; ???String json = "{\"name\"" + ":\"" + name + "\"" + ",\"data\"" + ":" + data + "}"; ???out.write(json);%>

ajax缓存问题

原文地址:https://www.cnblogs.com/ZiYangZhou/p/8387797.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved