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代码中得到的。我觉得这个参数多半是象征性的,没啥实际用处。

IE下使用jquery失效的问题(转载)的更多相关文章

  1. jQuery验证控件(转载)

    转自:http://www.cnblogs.com/hejunrex/archive/2011/11/17/2252193.html 官网地址:http://bassistance.de/jquery ...

  2. 解决IE8下opacity属性失效问题,无法隐藏元素

    解决IE8下opacity属性失效问题   由于opacity属性存在兼容性问题,所以在IE8下,用opacity来设置元素的透明度,会失效,从而导致页面的样式问题.在IE8及其更早的浏览器下,我们可 ...

  3. chrome浏览器下用jQuery的load函数来跨域加载页面,响应状态status为(canceled)是什么情况? JSON和JSONP,也许你会豁然开朗,含jQuery用例

    http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 问题来源:http://q.cnblogs.com ...

  4. Visual Studio下使用jQuery的10个技巧

    广泛流行的jQuery是一个开源的,跨浏览器和兼容CSS 3的JavaScript库,你可以用它简化你的JavaScript编码任务和操作(添加,编辑和删除)HTML内容中的DOM元素,本文介绍10个 ...

  5. IE下使用jquery ajax失效

    ie是根据请求的url是不是一样来是否发送请求,对于同一请求,ie只发送一次http请求,得到缓存之后就不再请求,所以同一请求发送多次,但ie实际是不会发送的 在你的第二次请求之前 使用 $.ajax ...

  6. jQuery性能优化指南(转载)

    现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了, 比如我. jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, ...

  7. jsp中的jquery失效以及引入js失败的问题

    这段时间在试着看公司用的框架是怎么写的,看到项目中对jquery进一步封装的这一部分,所以自己试着写一些demo来模仿框架中的用法. 再一次的,又遇到了一个问题,jsp中引入js的问题,好久没有自己从 ...

  8. 解决IE8下opacity属性失效问题

    由于opacity属性存在兼容性问题,所以在IE8下,用opacity来设置元素的透明度,会失效,从而导致页面的样式问题. 在IE8及其更早的浏览器下,我们可以使用filter属性,来代替opacit ...

  9. IE8下部分方法失效的解决方法

    1.IE8下String的Trim()方法失效的解决方法 用jquery的trim()方法,$.trim(str)就可以了: 例:_id.trim() !='' 改为  $.trim(_id) != ...

随机推荐

  1. xss的高级利用

    以往对XSS的利用大多数都是针对于挂马,钓鱼,盗cookie等,这些方式并没有真正发挥到XSS的作用,因为很少人能了解XSS的实质,会话劫持,浏览器劫持,XSS能做到的东西远远超乎我们的想象. 一 X ...

  2. 1069: [SCOI2007]最大土地面积|旋转卡壳

    旋转卡壳就是先求出凸包.然后在凸包上枚举四边形的对角线两側分别找面积最大的三角形 因为在两側找面积最大的三角形的顶点是单调的所以复杂度就是n2 单调的这个性质能够自行绘图感受一下,似乎比較显然 #in ...

  3. Junit核心——测试类(TestCase)、测试集(TestSuite)、测试运行器(TestRunner)

    首先,把这三个定义简单的说明一下: 1.测试类(TestCase):一个包含一个或是多个测试的类,在Junit中就是指的是包含那些带有@Test注解的方法的类,同一样也被称作“测试用例”; 2.测试集 ...

  4. Linux 倒引号、单引号、双引号

    1.倒引号表示命令,用于命令替换,获取命令的返回结果. echo now is `date` 或者 echo now is $(date) 2.单引号 name=Andy  没有问题, 如果想 nam ...

  5. sonatype Nexus3 install on Kubernetes

    Nexus 搭建代码 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nexus3 labels: app: nexus ...

  6. C#秘密武器之委托

    在C#的世界里,委托是无处不在,尤其在.NET自己封装的框架里到处都有其身影,所以掌握委托就很有必要了!那什么是委托呢?其实委托就是一种数据类型,跟int等东东差不多,只不过在使用时要自己先去构建一个 ...

  7. Android 蓝牙开发之A2DP基本功能

    本文主要是Android做为Audio Source端,A2DP的基本操作:包括连接.断开连接.设置优先级.获取优先级.获取A2DP连接状态.获取A2DP连接的设备列表等功能. 1.简介 Audio ...

  8. Vue 表单

    1.v-model v-model不再关心初始化的value值. <!DOCTYPE html> <html lang="zh"> <head> ...

  9. Swift的String与OC的NSString的区别

    Swift的String类型是值类型.如果你创建了一个新的字符串值,那么当其进行常量.变量赋值操作或在函数/方法中传递时,会进行值拷贝. 在不同的情况下,都会对已有字符串值创建新的副本,并对该新副本进 ...

  10. css hacks

    /***** Selector Hacks ******/ /* IE6 and below */ * html #uno { color: red } /* IE7 */ *:first-child ...