2

我正在开发一个 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 类将返回一个字符串,即“ TRUE”/“ FALSE”。如果返回值为 true,则会出现 greenzx.png 图像,否则redzx.png会出现图像。

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

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

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

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

4

2 回答 2

6

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

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

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

于 2013-03-13T10:38:39.193 回答
3

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

于 2013-03-13T10:48:48.510 回答