如何让XMLHttpRequest在IE中没有缓存

时间:2013-05-13 02:56:45

标签: java javascript jquery ajax xmlhttprequest

if(xmlhttp) { 
xmlhttp.open("GET","DokterWeek_KlantoverzichtServletAjax?" +   $(this).prop("href").split("?")[1],true);//gettime will be the servlet name
xmlhttp.onreadystatechange  = handleServerResponse;
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(null);
 }

});
});



function getXMLObject()  //XML OBJECT
{
var xmlHttp = false;
try {
 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")  // For Old Microsoft Browsers
  }
  catch (e) {
   try {
   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")  // For Microsoft IE 6.0+
   }
   catch (e2) {
     xmlHttp = false   // No Browser accepts the XMLHTTP Object then false
     }
     }
   if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();        //For Mozilla, Opera,chrome Browsers
   }
    return xmlHttp;  // Mandatory Statement returning the ajax object created
   }





  var xmlhttp = new getXMLObject(); //xmlhttp holds the ajax object


     function handleServerResponse() {

   document.getElementById("pop1").innerHTML = xmlhttp.responseText; //Update the HTML              Form element 

  }

您好, 我有以下问题(代码工作),当我使用firefox或Chrome时,xmlhttpRequest(ajax-call)刷新(因此效果很好)。但IE 9.0+缓存XMLHttprequest,因此它永远不会刷新。我在互联网上阅读了很多关于这个问题,但我真的找不到解决这个问题的方法。

有人能告诉我解决这个问题的可能性吗? 我认为使用jquery ajax可以解决这个问题,但我没有大脑将整个脚本调整为jquery。有人说你可以把实时时间设置为0,但我找不到这个。 (我用servlet传达我的Ajax) 有人知道一个清晰,简单的解决方案吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

一旦接受的做法是将随机参数添加到网址,如时间戳。

_d之类的参数添加到值为new Date().getTime()

的网址中

例如:

xmlhttp.open("GET","DokterWeek_KlantoverzichtServletAjax?_d=" + (new Date().getTime()) + '&' +   $(this).prop("href").split("?")[1], true);//gettime will be the servlet name