zoukankan      html  css  js  c++  java
  • IE6 ajax解析parseerror

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

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

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

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

      解决的办法有几种:

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

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

      2、阻止a的默认事件

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

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

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

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

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

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

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

  • 相关阅读:
    spring 好处与优点
    在SSH框架中使用Spring的好处
    xml配置文件详解
    了解OpenStack
    剖析云计算中的“共享型数据库”(转载)
    云计算开始。。。
    (一)使用springAPI以及自定义类 实现AOP-aop编程
    依赖注入之针对不同类型变量的几种注入方式
    Spring学习笔记--环境搭建和初步理解IOC
    hdu5305Friends dfs
  • 原文地址:https://www.cnblogs.com/mr189/p/3705032.html
Copyright © 2011-2022 走看看