【问题标题】:session being remembered by browser浏览器记住会话
【发布时间】:2013-03-13 21:08:34
【问题描述】:

我正在开发一个 struts2 网络应用程序。当按钮单击发生时,我会对 struts 操作进行 $getJSON 调用并对 java 类执行一些操作。

$.getJSON('uponClickingBtn',function(data){
        if(data.status=="TRUE"){
            $('#test').attr('src','image/greenzx.png');
        }
        else{
            $('#test').attr('src','image/redzx.png');
        }       
    });

Java 类将返回一个字符串,即“TRUE”/“FALSE”。如果返回值为 true,则会出现 greenzx.png 图像,否则会出现 redzx.png 图像。

此过程第一次运行良好。但是当再次单击同一个按钮时,不会调用 Java 动作类,浏览器只会返回最新的图像。

说,如果是greenz.png,它马上又是greenz.png

我的浏览器表现得好像它记住了会话中的值,这是不受欢迎的。这是否与浏览器设置有关,否则我将不得不更改我的代码?

PS:我需要使用IE7/IE8作为浏览器。它适用于FirefoxIE 是我遇到这个问题的地方。

【问题讨论】:

  • 其他浏览器 chrome 和 firefox 呢?在这些和 ie9+ 中工作正常?
  • @Jai 与我已经提到的 firefox 配合得很好。

标签: jquery internet-explorer session struts2


【解决方案1】:

原因是浏览器缓存了您操作的响应。

  • 选项 1 - 在您的 JAVA 操作中,您必须将 HTTP 缓存设置为 no-cache
  • 选项 2 - 当您使用 $getJSON 时,向 url 添加一个随机参数,例如 '&time=' + Math.random()(该值每次都必须是唯一的)。

第二个选项可以通过使用$.ajaxcache:false 选项自动实现。

【讨论】:

    【解决方案2】:

    看起来浏览器返回了缓存数据而不是加载新数据。为避免这种情况,您可以向数据 url 添加一些参数 即:将 '?time='+new Date().getTime() 添加到数据 url 的末尾。

    【讨论】:

      猜你喜欢
      • 2015-08-09
      • 1970-01-01
      • 2014-10-30
      • 2015-04-28
      • 2014-09-28
      • 2011-09-22
      • 1970-01-01
      • 2012-04-11
      • 2018-09-19
      相关资源
      最近更新 更多