一、jquery之Ajax_get缓存问题的
1.在ie系列下,$.get()方法在URL地址固定时,会缓存返回结果,导致不可预料的问题。但在火狐下,则不会缓存。
POST则 认为是一个 变动性 访问 (浏览器 认为 POST的提交 必定是 有改变的)
1.1 把$.get()方法换成$.ajax(),然后配置cache:false即可
$.ajax({
url:"getAllStudent?page" + page,type:"get",cache:"false"
})
1.2 设置全局参数
$.ajaxSetup({cache:false});
二、循环中(for循环)异步问题
1. 设置async:false
For循环中异步变同步,但是chrome浏览器不允许这么做
for(var i = 0 ; i < result.length; i++){
$.ajax({
"url":"/getuserinfo/username=" + result[i].username,"type":"get","async":false,success:function(result2){
//修改字典,给字典增加一项
result[i].avatar = result2.avatar;
}
})
}
2. 推荐 iterator
注意:没有for循环,数组.length是一个边界条件,初始调用函数iterate(0)
这是需要清楚缓存 $.ajaxSetup({cache:false})
function getPage(page){
//清楚全有页面内容
$("#quanbushuoshuo").html("");
$.ajax({
url:"/getAllShuoshuo?page=" + page,success:function(result){
//result是一个数组
console.log(result);
iterator(0);
//迭代器
function iterator(i){
if(i == result.length){
//这里迭代完毕之后
return;
}
$.get("/getuserinfo?username=" + result[i].username,function(result2){
//修改字典,给字典增加一项
result[i].avatar = result2.avatar;
//组装字典
var htmlstring = compiled(result[i]);
$("#quanbushuoshuo").append($(htmlstring));
i<a href="https://www.jb51.cc/tag/tera/" target="_blank" class="keywords">tera</a>tor(i+1);
}
)
}
}
})
}