konsei 2021-08-16 11:56 采纳率: 72.2%
浏览 22
已结题

jquery加载xml时在Object的原型链上自定义了方法后会报错

我在Object的原型链上定义了如下方法用于获取xml节点的文本

Object.prototype.xmlText = function(){
    console.log('执行了这里');
    try{
        return new XMLSerializer().serializeToString($(this)[0]);
    }catch(e){
        return '';
    }
}

然后定义了如下方法用于加载一个xml文件的节点对象

function fn_load_xml_debug(_url){
    var ret = {};
    $.ajax(
    {
        type: "get",
        url:_url,
        async: false,
        dataType: "xml",
        success: function(xml) {
            console.log('成功');
            ret = xml;
        },
        error:function(e){
            console.log(JSON.stringify(e));
        }
    });
    return ret.documentElement;
}

这时问题来了,我在调用fn_load_xml_debug('xml/test.xml')方法后,ajax请求直接报错了,如下,并且在调用该方法时会自动执行我在原型链上定义的方法,我把在原型链上定义的方法删除了就可以成功加载xml了,这是怎么回事啊?

{"readyState":0,"status":0,"statusText":"TypeError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': String contains non ISO-8859-1 code point."}

  • 写回答

2条回答 默认 最新

  • konsei 2021-08-16 13:37
    关注

    虽然还是不知道原因,不过已经找到解决办法了,直接把xmlText()方法定义到jquery对象上就可以了

    $.fn.xmlText = function(){
        return new XMLSerializer().serializeToString($(this)[0]);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月4日
  • 已采纳回答 8月27日
  • 创建了问题 8月16日