微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery总结:基本概念、ajax、ajax异步变同步

一、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);
                    }
              )

            }
    }
})

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐