Posted on 2009-10-22 21:00
S.l.e!ep.¢% 阅读(1245)
评论(0) 编辑 收藏 引用 所属分类:
HTML
我经常碰见这样的问题 我想用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的内容(增加参数,时间戳即可)这样的目的就是在服务器端理解为新的请求,不会将缓存中的内容回传过去.更新内容就会显示在客户端页面了.