zoukankan      html  css  js  c++  java
  • IE下使用jquery失效的问题(转载)

    1,然后各种调试,最后发现:把ie把关了,再打开$.get()。会调用,再第二次调用的用的时候发现又不行了。于是我推断是ie缓存的问题,把ie缓存清除后,果然可以了。但是客户不可能知道清理缓存。所以只能自己想办法了

    在网上发现各大朋友都给了个方法就是用jquery自带的方法:

     代码如下 复制代码

    $.ajaxSetup({cache: false });

    另外还有分析是,ie是根据请求的url是不是一样来是否发送请求,对于同一请求,ie只发送一次http请求,所以同一请求发送多次,但ie实际是不会发送的。

    有了这个原因:那么就好办了,可以在url后面加个时间戳。

     代码如下 复制代码
     $.get( 
        "imgsUpload", 
        {imgsPath:path,<SPAN style="COLOR: #333399">timeStamp: new Date().getTime()</SPAN>}, 
        function(data){ 
          
        } 
    ); 
     

    2,以下问题就是个人问题了,但是请求是能发送到后台了,并且也执行了,也返回了.但是不能执行ajax的回调方法。

    但在其它浏览器是正的。分析返回来过来的data,发现乱七八糟的。那就是返回时的数据类型不对,我返回的json,但是我想都是以字符串形式返回的,所以我在服务器端有如下代码:

     代码如下 复制代码
    <SPAN style="COLOR: #333399">response.setContentType("text/plain;charset=UTF-8"); 
    </SPAN> 

    ff,chrome是正常的,但是ie去只能把识别为text,不能解析成json,所有没有调用json方法

    经过测试发现,可以不用设置消息头,当然要设置也是可以的,但是不是text/plain,而是:

    response.setContentType("application/json;charset=UTF-8");


    jquery ajax在IE下失效

    有个页面需要用jquery的ajax获取数据,在chrome和ff下都能正确获取并显示数据,代码段如下:

     代码如下 复制代码

      $.ajax({


        url: "/item/getComments",

        dataType: "json",

        data: {"iid": "123456", "nick": "xlight"},

        success: function (data) {

            $(".comments-total").html(data.total);

            $(".comments-body").html(data.list);

        }

    });

    用IE自带的debug工具查看,显示数据已经成功获取(status:200并有数据返回),那就奇怪了……

    给ajax加上error回调:

     代码如下 复制代码


      $.ajax({


        url: "/item/getComments",

        dataType: "json",

        data: {"iid": "123456", "nick": "xlight"},

        success: function (data) {

            $(".comments-total").html(data.total);

            $(".comments-body").html(data.list);

        },

        // 这里三个参数详细请看jquery手册

        error: function (a, b, c) {

            alert(c);

        }

    });

    IE显示错误“Error:c00ce56e”之类的信息,google了下,大致了解到这是IE无法解析数据的原因,绝大多数是因为header中有畸形编码导致的。

    知道了原因排查起来也就容易了,用IE的debug工具看了下返回数据的header,有“Content-Type text/html; charset=utf8”,可以看出这里应该是utf-8,找到后端代码改之(header发送函数,如php的header()),刷新就ok了!

    其它问题

    1) Apache URLRewrite等服务器级别的转向支持。如可以把test.js?folder=/js/解析为/js/test.js。
    2) Javascript和HTML,图片一样,作为静态文件会被浏览器缓存。后面加个随机数,能保证每次请求都是新文件 ,如common.js?t=12442344。 
    3) 这个参数是供整体页面中查询js的参数所用,属js外部应用,但绝对不是供js的内部应用。如你有一个html页面,里面写上一段:
    <script type="text/javascript" src="test.js?a=100&b=2"></script>
    首先,这个?a=100&b=2是绝对不会影响到test.js的内部函数执行的,因为test.js无法接收到这个参数。
    其次,这个?a=100&b=2是可以通过html中的DOM结构访问到这个js路径。如下例:
    var Xsrc = document.getElementsByTagName("script")[document.getElementsByTagName("script").length-1].src
    此时Xsrc能得到test.js?a=100&b=2,然后通过正则表达式的方法来解析出这些参数:a=100及b=2。然后你拿这两个参数实现一些判断。 
    最后,回头来看看文首的?jsver=2.1.1.3626.0,第一种肯定是不可能的,不是每一种服务器都支持URLRewrite的。我觉得这个性质介于第二种和第三种之间。没觉得jsver=2.1.1.3626.0有什么实用的,顶多用来判断是什么版本,但这个版本号本来就是从PHP代码中得到的。我觉得这个参数多半是象征性的,没啥实际用处。

  • 相关阅读:
    Leetcode53_Spiral_Matrix
    leetcode 分类
    bash 脚本
    关闭占用端口
    blue bossa
    判断对称二叉树
    This server is in the failed servers list: localhost/127.0.0.1:16000 启动hbase api调用错误
    在cikuapi.com上抓取相关词
    那些天使用AWS填过的坑和注意事项
    一百个人的十年-读后感
  • 原文地址:https://www.cnblogs.com/kfx2007/p/3142274.html
Copyright © 2011-2022 走看看