ajax总是读取缓存的数据的问题

looqy 发布于 2013/08/19 22:11
阅读 1K+
收藏 1

代码如下:

for (var i = 0; i < rows.length; i++) {
	                    	var r = '';
	                    	r = rows[i];
	                    	var gkzxtempid = '';
	                    	gkzxtempid = r.gkzxtempid;
	                        //循环遍历签章
	                        if(caozuoflag=='0'){
			                    $.ajax({
			                        url: url+"&id=" +gkzxtempid+"&mymenuid="+menuid,
			                         type: 'POST',
			                        success: function (text) {
			                        	qianzhang(text,gkzxtempid,menuid);
			                        },
			                        error: function () {
			                        	caozuoflag='1';
			                        	alert("操作失败!");
			                        }
			                    });
	                        }
	                    }
 
 function qianzhang(text,gkzxtempid,menuid){
         alert(gkzxtempid);

      如上面代码所示,js变量gkzxtempid从r中取出来的时候是不一样的,执行完一次ajax并success后,调用另外一个js函数——qianzhang,在这里弹出gkzxtempid,几次显示的值都是一样的,请教下各位程序猿,这是什么原因,因为是从ajax里面调用的qianzhang方法所以只传递过去第一个gkzxtempid的值?但是我上面已经在每次使用gkzxtempid之前把gkzxtempid置为空了啊,为什么每次在qianzhang函数里alert出来的值还是一样的呢??

      求帮助,纠结啊~

加载中
0
leo108
leo108

楼上几个都不认真看问题么

gkzxtempid明明是本地的变量,和ajax请求回来的数据有毛线关系。

因为ajax是异步的,你这个代码在i=0的请求返回之前,for循环就已经结束了,gkzxtempid这个值已经是最后一个rows里面的值了

至于解决方案,可以把gkzxtempid放到请求的返回数据里

success:function(data){
    gkzxtempid = data.gkzxtempid,
    qianzhang(data.text,gkzxtempid,menuid);
}

looqy
looqy
少侠威武,已跪舔!
looqy
looqy
少侠稍后我改代码试下
looqy
looqy
好像是这个样子的,我的标题也写的有问题,误导大家了,sorry,怪我太菜
0
铂金上帝
铂金上帝

请求的URL保持每次都不一样就行了。

url: url+"&id="+gkzxtempid+"&mymenuid="+menuid+"&no_repeat_para=" + Date.now();

looqy
looqy
试过在后面加fresh=Math.random(),但是每次qianzhang里面alert的值还是一样的
0
景愿
景愿
ajax加一个cache:false参数
looqy
looqy
cache:false?
looqy
looqy
怎么加,求写下语句,谢谢
0
景愿
景愿
for (var i = 0; i < rows.length; i++) {
	                    	var r = '';
	                    	r = rows[i];
	                    	var gkzxtempid = '';
	                    	gkzxtempid = r.gkzxtempid;
	                        //循环遍历签章
	                        if(caozuoflag=='0'){
			                    $.ajax({
			                        url: url+"&id=" +gkzxtempid+"&mymenuid="+menuid,
			                         type: 'POST',
			                         cache:false,
			                        success: function (text) {
			                        	qianzhang(text,gkzxtempid,menuid);
			                        },
			                        error: function () {
			                        	caozuoflag='1';
			                        	alert("操作失败!");
			                        }
			                    });
	                        }
	                    }
looqy
looqy
试了,木有效果,alert的还是一样的值。。。
0
pauli
pauli
url: url + "&id=" + ... + "&" + new Date().getTime()
looqy
looqy
gkzxtempid不是返回的结果,就是从row里面取出来的值,只不过在ajax里面和下面的qianzhang方法里面都调用了,而qianzhang方法里的gkzxtempid是通过ajax方法传递过去的
looqy
looqy
回复 @pauli : 这个ajax在执行success了以后调用了下面那个qianzhang方法,在这里弹出来的gkzxtempid的值不应该是一样的啊
pauli
pauli
@looqy 返回的结果,要你自己设置,局部变量 gkzxtempid 当然是一样的
looqy
looqy
不行啊,并不是后台读取了缓存的值,而是下面那个qianzhang js函数里面alert的gkzxtempid是一样的,ajax把JS的变量给缓存了?
pauli
pauli
@looqy 有没有都行,没有了,不就相当于每次参数 key 不一样吗?
下一页
返回顶部
顶部