`

IE下使用jquery ajax失效的原因总结(转)

阅读更多

 

文章出自:http://www.php100.com/html/program/jquery/2013/0905/5895.html

 

本文章总结了IE下使用jquery ajax失效的原因和一些解决办法,有需要的朋友可参考一下本文章。

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

 

 

 

 

分享到:
评论

相关推荐

    ie9 ajax请求失败解决方案

    完美解决ie9 ajax 请求失败问题,解决ie9 跨域请求失败问题,欢迎下载,亲测有效。jquery.XDomainRequest.js

    jquery-1.8.3.min.js

    jQuery1.8.2在IE9中调用ajax失败的问题 jQuery1.7.1不能正确地设置IE7中克隆元素的tabindex属性 压缩的JS文件包含非ASCII字符 如果body样式设置为display:none,则$('body')。show()无法工作 在IE9中element.css...

    jquery在ie7下选择器的问题导致append失效的解决方法

    在Internet Explorer 7(简称IE7)浏览器环境下,使用jQuery库进行DOM操作时,我们可能会遇到选择器无法正确匹配DOM元素或者append方法无法正常工作的现象。这一问题通常发生在使用带有ID选择器(例如#...

    Jquery1.8 chm

     jQuery 1.8.2在IE9中调用ajax失败的问题  jQuery 1.7.1不能正确地设置IE7中克隆元素的tabindex属性  压缩的JS文件包含非ASCII字符  如果body样式设置为display:none,则$('body').show()无法工作  在IE9中...

    掌握 ajax ajax的经典文章

    1. **浏览器兼容性**:早期版本的IE浏览器对Ajax支持不完全,需要使用ActiveXObject。 2. **SEO问题**:搜索引擎可能无法抓取到Ajax加载的内容。 3. **页面状态管理**:因为页面未整体刷新,传统的页面导航和书签...

    对ajax前进后退的处理

    在Web开发中,AJAX(Asynchronous JavaScript and XML...在提供的`cyzshenzhen-jquery_history_demo-master`压缩包中,可能包含了使用jQuery实现的`hash`管理和AJAX前进后退功能的示例代码,可以作为学习和参考的资源。

    ajax在兼容模式下失效的快速解决方法

    使用jQuery,用ajax实现局部刷新功能,在火狐,360急速浏览器高速模式下,ie8,9都能正常运行,但切换到兼容模式下无效,解决办法有两种关闭浏览器兼容性视图,二是引入json2.js文件 这里采用第一种,并且使用一种...

    ajax 验证ppt

    4. **页面历史和前进/后退功能**:默认情况下,使用Ajax加载的内容不会改变浏览器的URL,导致前进/后退按钮失效,需要额外处理。 **Ajax的进阶应用** 1. **jQuery和库的支持**:jQuery等JavaScript库提供了更简洁...

    IE与firefox之jquery用法区别

    在开发Web应用时,jQuery是一个被广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互。然而,不同的浏览器对于JavaScript代码的解析和执行存在差异,这会影响到jQuery代码的兼容性。特别是在...

    $.getJSON在IE下失效的原因分析及解决方法

    在介绍$.getJSON在IE浏览器下失效的原因及解决方案之前,我们先来了解一下$.getJSON方法以及它在不同浏览器间的差异性。$.getJSON是一个常用的jQuery方法,用于简化AJAX数据获取的过程,它封装了$.ajax方法。通过$....

    Ajax从入门到精通课件

    1. **jQuery和Ajax**:jQuery简化了Ajax的使用,提供了$.ajax()、$.get()、$.post()等方法。 2. **Promise和async/await**:现代浏览器支持Promise和async/await语法,使异步编程更易读和管理。 3. **Fetch API**:...

    ie,360下html锚点失效问题解决

    在IE和360浏览器下,锚点失效的问题是一个常见的前端开发问题。通常情况下,网页中的锚点链接可以正常工作,但是在某些特殊情况下,比如页面滚动位置没有正确更新,或者浏览器对特定的DOM结构和CSS属性存在兼容性...

    jQuery中文参考文档.rar

    《jQuery中文参考文档》是一个非常宝贵的资源,它涵盖了jQuery库的各个方面,对于学习和使用jQuery的开发者来说,具有很高的实用价值。jQuery是一个广泛使用的JavaScript库,它的目标是简化HTML文档遍历、事件处理、...

    被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用

    标题中的问题揭示了一个常见但可能不那么明显的JavaScript和jQuery在Internet Explorer(IE)与Firefox浏览器中失效的情况。这个问题困扰了一位使用Asp.Net Webform技术进行项目开发的学员,他在尝试实现jQuery功能...

    Ajax的学习笔记

    Ajax是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新。这种技术的核心是JavaScript,XML最初是作为数据交换格式,但随着JSON的流行,现在更...

    ECharts V3.1.6 最新图表控件修复版(兼容IE9以下浏览器)

    在JavaScript的世界里,ECharts通常与jQuery一起使用,jQuery是一个广泛采用的JavaScript库,它简化了DOM操作、事件处理和AJAX交互。在ECharts V3.1.6修复版中,可能已经解决了与jQuery库配合时可能出现的冲突或兼容...

    解决kindeditor 编辑器完美支持IE11 看不见上传文件框问题 无法保存问题

    此外,检查并确保所有异步操作(如Ajax请求)在旧版浏览器中的执行正常,比如使用jQuery的`.ajax()`方法代替原生的`XMLHttpRequest`对象。 接下来,我们探讨“上传文件框在IE11中看不见或位置不对”的问题。这可能...

    IE兼容性问题的快速解决方法_ajax请求不发送到后台

    因此,当你在IE下看到AJAX请求没有真正发送,可能是由于这个原因。 针对这个问题,有一个常见的解决方案就是在请求的URL后面添加一个动态生成的参数,通常是一个随机数。这可以确保每次请求的URL都是唯一的,从而...

Global site tag (gtag.js) - Google Analytics