ajax有时没有执行,AJAX 后台有时执行方法,有时执行,有时不执行问题

讨论了使用JavaScript的Ajax在执行后台方法时出现的偶尔不执行问题,主要原因是IE浏览器的缓存问题。解决方案包括设置请求头禁用缓存或在URL中添加时间戳防止缓存。对于POST请求,不存在此类缓存问题。帖子中还涉及了其他解决办法和技术细节。
摘要由CSDN通过智能技术生成

我经常碰见这样的问题 我想用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 = ' /trainplan/addLeafNode.shtml?objectivename='+document.all.objectivename.value+'&objectivecontent='+document.all.objectivecontent.value+"&paterid="+paterid; request.open("GET", requesturl, true); request.onreadystatechange = openResponse; 按道理说,AJAX应该执行 /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的内容(增加参数,时间戳即可)这样的目的就是在服务器端理解为新的请求,不会将缓存中的内容回传过去.更新内容就会显示在客户端页面了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值