js代码在调试状态执行正确,但是正常使用时没有反应

比如在一个普通的方法中存在一个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");
		}
	});
}

猜你喜欢

转载自blog.csdn.net/mylf19/article/details/86087729
今日推荐