码迷,mamicode.com
首页 > 其他好文 > 详细

IE6 ajax解析parseerror

时间:2014-05-03 23:36:53      阅读:410      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   ext   

IE6下,用a[href="javascript:void(0);"]或者a[href="javascript:;"]发起ajax|jsonp请求会出现请求成功,返回数据无法解析的情况,直接解析报错"parseerror",其他浏览器则解析正常,本地调试正常,放到服务器上,同一个ajax请求IE6会经常(偶尔会解析正常)出现问题。

    <a href="javascript:;" id="btn">点击发送请求</a>
bubuko.com,布布扣
        $("#btn").click(function(){
            $.ajax({
                url : "your address",
                dataType : "json", // |jsonp
                success : function(data){
                    // 非IE6能够正常执行成功回调
                },
                error : function(jqXHR, textStatus, thrown){
                    // IE6直接输出textStatus为parseerror错误 
                }
            });
        });
bubuko.com,布布扣

究其原因,在于<a>的href属性为javascript:void(0)或者javascript:;。

  "javascript:**"作为javascript的伪协议,给a标签的href赋空置,是期望生成一个空的href的a标签,自带鼠标手型,却又不作为<a>跳转, 语义化好,其他浏览器也能正常识别,但是伟大的IE6认为"此时<a>还存在默认的跳转行为,IE6会尝试刷新或重定向页面地址,且中断正在进行的请求,此时请求程序已经中断但是请求结果已经返回,则请求结果被搁置不能解析"。

  解决的办法有几种:

  1、更换a标签为其他,如span,div;

    <span id="btn">点击发送请求</span>
bubuko.com,布布扣
        $("#btn").click(function(){
            $.ajax({
                url : "your address",
                dataType : "json", // |jsonp
                success : function(data){
                    // 包括IE6在内浏览器能够正常返回
                },
                error : function(jqXHR, textStatus, thrown){}
            });
        });
bubuko.com,布布扣

  2、阻止a的默认事件

    <a href="javascript:;" id="btn">点击发送请求</a>
bubuko.com,布布扣
        $("#btn").click(function(e){
            e.preventDefault();
            $.ajax({
                url : "your address",
                dataType : "json", // |jsonp
                success : function(data){
                    // 非IE6能够正常执行成功回调
                },
                error : function(jqXHR, textStatus, thrown){
                }
            });
        });
bubuko.com,布布扣

  3、取消a的javascript:协议,换成###

    <a href="javascript:;" id="btn">点击发送请求</a>
bubuko.com,布布扣
        $("#btn").click(function(e) {
            $.ajax({
                url: "your address",
                dataType: "json", // |jsonp
                success: function(data) {
                    // 非IE6能够正常执行成功回调
                },
                error: function(jqXHR, textStatus, thrown) {
                }
            });
        });
bubuko.com,布布扣

   a[href="#"]锚点,锚标记为空,则取默认值为#top,所有浏览器点击该a会跳转到页面顶部;

   a[href="##"] 锚点,锚标记为#,IE下点击依然会跳转到页面顶部;

   a[href="###"]空链接。

  以上三种情况,点击之后都会在地址栏追加锚点值,影响美观。

 

 

 

IE6 ajax解析parseerror,布布扣,bubuko.com

IE6 ajax解析parseerror

标签:style   blog   class   code   java   ext   

原文地址:http://www.cnblogs.com/mr189/p/3705032.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!