zoukankan      html  css  js  c++  java
  • IE11在使用get方式提交没有进行请求的bug问题

    在做iemsc项目的时候,测试提交了一个bug问题,在发布新闻成功后,自动刷新列表的时候,不进行刷新,但是在谷歌上面又不会出现这种问题,

    原因:

    发现请求的时候用的get请求,因为不同的浏览器的请求机制可能不一样,在后台查看接口的时候发现请求被重定向了,为302,所以就是缓存的问题,

    解决办法:

    一、将get方式改成post方式,这种方式直接,因为post方式是默认不缓存,而get会被浏览器主动cache

    既然是缓存的问题,那么延生的解决办法还有

    二、在请求参数的里面加上一个随机数,目的就是告诉浏览器,请求的主体发生了变化

    data:{r:Math.random()}
    <script>
        $(function(){
            $(".js_btn").click(function(){
                $.ajax
                ({
                    type:'GET',
                    url:'getRealTime',
                    data:{r:Math.random()},
                    dataType:'json',
                    success:function(d){
                        if(d.isSuccess){
                            $(".js_text").val(d.data);
                        }else{
                            alert(d.message);
                        }
                    },
                    error:function(){
                        alert("请求超时!");
                    }
                })
            })
        })
    </script>

    每次执行请求的内容如下:

    这里写图片描述

    三、更改jquery的全局不缓存

    使用jQuery.ajaxSetup(name:value, name:value, …) 方法设置全局 AJAX 默认选项。 

    通过这种办法可以设置让Ajax发送请求后得到响应返回的结果不写入浏览器的缓存中。

     $.ajaxSetup({ cache:false });

    我这样做原理其实和第二种方式差不多,在设置Ajax返回数据不写入缓存后,每次点击“获取当前时间”后,向服务器端发送的请求内容也是不一样的,同理,这样做也可以解决了IE每次发送相同请求Ajax时都会首先读取缓存中内容的问题。

    四、在头部mete里面no-cache:no-cache,(这种方式没有测试,按道理是可以的)

  • 相关阅读:
    1-4 Autolayout
    1-3 UIScrollView
    lua 的语法糖
    javascript文档
    cocos2d 图片模糊
    a*寻路分析
    class按传递时分析
    mac 不再接受预览版提示
    OS X 10.11 El Capitan 三指拖动的开启方法
    mac系统卸载mono
  • 原文地址:https://www.cnblogs.com/pengfei25/p/8342126.html
Copyright © 2011-2022 走看看