首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

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

2012-02-19 
AJAX 后台有时执行方法,有时执行,有时不执行问题 - Web 开发 / Ajax我经常碰见这样的问题我想用JS执行后台

AJAX 后台有时执行方法,有时执行,有时不执行问题 - Web 开发 / Ajax
我经常碰见这样的问题
我想用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 地址后台里面的方法
因为我里面有修改数据库的操作
但有时候添加数据库记录,有时候不添加数据库记录,到底怎么解决,我只想搞明白,没别的意思
那位大大能解释一下

我后台代码肯定没问题,如果我是正常提交,然后页面刷新的话,是正确的

[解决办法]
探讨
xmlHttp = GetXmlHttpObject();
if (xmlHttp == null) {
alert("浏览器不支持 AJAX!");
return;
}
var url = " <%=strGetDataUrl%>";
url = url + "?Class=Show";
url = url + "&SID=" + Math.random(); // 加上一个随机数,必须滴!
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);

[解决办法]
我觉得后面加个 time比较合适, 比如你不想他每次请都都更新缓存, 就可以后台跟个时间, 以分钟或小时为标准, 即在同一时间段内发送的后面跟随数字是相同的...
[解决办法]
探讨
这是get方式提交时的缓存问题,说到底是ie惹的祸,你加一句
request.setRequestHeader("If-Modified-Since","0");
在request.open("GET", requesturl, true); 前就可以了

[解决办法]
UP
[解决办法]
缓存问题
方法一:
xmlHttp.open("GET", "default.aspx", true);
xmlHttp.setRequestHeader("If-Modified-Since","0");
xmlHttp.send(null);
方法二:
xmlHttp.open("GET", "default.aspx?param="+Math.random(), true);
或者
xmlHttp.open("GET", "default.aspx?param="+new Date().getTime(), true);

[解决办法]
探讨
缓存问题
方法一:
xmlHttp.open("GET", "default.aspx", true);
xmlHttp.setRequestHeader("If-Modified-Since","0");
xmlHttp.send(null);
方法二:
xmlHttp.open("GET", "default.aspx?param="+Math.random(), true);
或者
xmlHttp.open("GET", "default.aspx?param="+new Date().getTime(), true);

[解决办法]
加随机数行,加时间也行,目的只有一个,不用缓存,每次都去数据库取,就不会出现问题了。
[解决办法]
mark
[解决办法]
探讨
引用:
这是get方式提交时的缓存问题,说到底是ie惹的祸,你加一句
request.setRequestHeader("If-Modified-Since","0");


在request.open("GET", requesturl, true); 前就可以了

高,我们以前也碰到过这样的问题,一直当成IE中毒,原来原因是这样啊,不过有些奇怪,相同的程序,在有些机子出现这问题,这双该如何解释呢。


[解决办法]
探讨
缓存问题
方法一:
xmlHttp.open("GET", "default.aspx", true);
xmlHttp.setRequestHeader("If-Modified-Since","0");
xmlHttp.send(null);
方法二:
xmlHttp.open("GET", "default.aspx?param="+Math.random(), true);
或者
xmlHttp.open("GET", "default.aspx?param="+new Date().getTime(), true);

热点排行