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

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日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效