比如在一个普通的方法中存在一个ajax请求,在success回调函数中有一个方法,来将请求结果刷新到网页中。
function getAllDepartment(){
$.ajax({
url : 'getalldepartment',
data : null,
datatype : "json",
success : function(value) {
allDepartments = eval('(' + value + ')');
initSelect('department1',0,1);
},
error : function(e) {
window.parent.myShow("联网出错!\nurl:getalldepartment");
}
});
}
还有一个出现这个错误的条件是,这个url的ajax刚刚执行过,就是在这个页面打开之后或者浏览器打开之后它就执行过,然后在其他的js方法中又再次触发这个方法,然后后面执行的这次或者除第一次之外,发现这个方法都没有执行。尤其是在稍微旧一点的浏览器,如360安全浏览器9.x会出现这个问题,但是换成10.x之后就没问题了。
百度之后发现出现这种情况的还不少,其中也不全都是ajax的问题。偶尔看到几个论坛里面问题主是否用了ajax,虽然题主没有用ajax,但是我想可能我这里的情况和ajax有关系。又一通百度之后发现ajax有一个cache配置参数,默认是true,就是如果这个url执行过了之后把返回值存在缓存中,以后就直接拿第一次执行的返回值来用,而不再去请求。
解决方法:
再ajax的配置参数中添加cache: false,就可以了。如下:
function getAllDepartment(){
$.ajax({
cache: false,
url : 'getalldepartment',
data : null,
datatype : "json",
success : function(value) {
allDepartments = eval('(' + value + ')');
initSelect('department1',0,1);
},
error : function(e) {
window.parent.myShow("联网出错!\nurl:getalldepartment");
}
});
}