S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

我经常碰见这样的问题 我想用JS执行后台方法,为什么有时候执行,有时候不执行 代码如下: var request; HTML code
function createRequest() {  try {   request = new XMLHttpRequest();  } catch (trymicrosoft) {   try {    request = new ActiveXObject("Msxml2.XMLHTTP");   } catch (othermicrosoft) {    try {     request = new ActiveXObject("Microsoft.XMLHTTP");    } catch (failed) {     request = false;    }   }  }  if (!request)   alert("Error initializing XMLHttpRequest!"); } createRequest(); var requesturl = ' <%=request.getContextPath()%>/trainplan/addLeafNode.shtml?objectivename='+document.all.objectivename.value+'&objectivecontent='+document.all.objectivecontent.value+"&paterid="+paterid; request.open("GET", requesturl, true); request.onreadystatechange = openResponse; 按道理说,AJAX应该执行 <%=request.getContextPath()%>/trainplan/addLeafNode.shtml 地址后台里面的方法 因为我里面有修改数据库的操作 但有时候添加数据库记录,有时候不添加数据库记录,到底怎么解决,我只想搞明白,没别的意思 那位大大能解释一下 我后台代码肯定没问题,如果我是正常提交,然后页面刷新的话,是正确的


1楼 2004-01-01 00:00 IamHades  [引用] [回复] 
 
这是get方式提交时的缓存问题,说到底是ie惹的祸,你加一句 request.setRequestHeader("If-Modified-Since","0"); 在request.open("GET", requesturl, true); 前就可以了 
 
 
 2楼 2004-01-01 00:00 junjunweiwei  [引用] [回复] 
 
引用 1 楼 IamHades 的回复: 这是get方式提交时的缓存问题,说到底是ie惹的祸,你加一句 request.setRequestHeader("If-Modified-Since","0"); 在request.open("GET", requesturl, true); 前就可以了 谢谢,我还想问下如果有post方式提交呢? 
 
 
 3楼 2004-01-01 00:00 showbo  [引用] [回复] 
 
post提交不存在缓存问题 
 
 
 4楼 2004-01-01 00:00 lanxiaoshi  [引用] [回复] 
 
再加一个随机数 a.jsp?temp=new Date().getTime() 
 
 
 5楼 2004-01-01 00:00 only_endure  [引用] [回复] 
 
request.setRequestHeader("cache-control","nocache"); 
 
 
 6楼 2004-01-01 00:00 Imore  [引用] [回复] 
 
长了见识了 谢谢啊 我想再问一下 request.setRequestHeader("If-Modified-Since","0"); 和 request.setRequestHeader("cache-control","nocache"); 区别是什么呢 另外我在使用request.setRequestHeader("If-Modified-Since","0"); 时候会报错执行不下去 求教问题所在 
 
 
 7楼 2004-01-01 00:00 only_endure  [引用] [回复] 
 
你只要明白你在ajax操作提交异步请求时,如果你设置了服务器端页面缓存,则请求的内容是“未更新的”,所以给你的表象是用户观看的页面不变。 还有另一种方法解决这一问题,就是你在request.open("GET", requesturl, true)中修改requesturl的内容(增加参数,时间戳即可)这样的目的就是在服务器端理解为新的请求,不会将缓存中的内容回传过去.更新内容就会显示在客户端页面了.  
 


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理