会话被浏览器记住

时间:2013-03-13 10:35:52

标签: jquery internet-explorer session struts2

我正在开发一个struts2 Web应用程序。当按钮单击发生时,我将对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类将返回一个String,“TRUE”/“FALSE”。如果返回值为true,则会显示greenzx.png图像,否则将显示redzx.png图像。

此过程首次正常运行。但是当再次单击相同的按钮时,不会发生对Java动作类的调用,浏览器只返回最新的图像。

说,如果是greenz.png,它会立即再次greenz.png

我的浏览器表现得好像会记住会话中的值,这是不受欢迎的。这与浏览器设置有什么关系,或者我将不得不更改我的代码?

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

2 个答案:

答案 0 :(得分:6)

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

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

使用$.ajax选项cache:false可以自动实现第二个选项。

答案 1 :(得分:3)

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