javascript - 在 IE 10 中转换 XML AJAX 响应时出错

标签 javascript jquery xml xslt internet-explorer-10

仅在 Internet Explorer 10 中,我在转换 AJAX 响应返回的 XML 时遇到错误:

Object doesn't support property or method 'transformNode'

这是我的代码:

function transformXML(xmlUrl, xsl) {
    $.ajax({
        type: 'GET',
        url: xmlUrl,
        success: function (xml, status, xhr) {
            // cross-browser logic omitted for simplicity
            xml.transformNode(xsl);
        },
        dataType: 'xml'
    });
}

这适用于 IE7 - IE9。 IE10 有什么问题吗?

最佳答案

这是因为,as of IE 10, XMLHttpRequest.responseXML returns a "native XML document" by default instead of an MSXML document .

您可以通过将 responseType 属性设置为 “msxml-document” 来强制 XMLHttpRequest 对象返回 MSXML 对象。不幸的是,这在 Google Chrome 中会被破坏,因此您需要将其包装在 try/catch 中。

在 jQuery 的 beforeSend 函数中分配它:

function transformXML(xmlUrl, xsl) {
    $.ajax({
        type: 'GET',
        url: xmlUrl,
        beforeSend: function (xhr, settings) {
            try { xhr.responseType = "msxml-document"; } catch(err){}
        },
        success: function (xml, status, xhr) {
            // cross-browser logic omitted for simplicity
            xml.transformNode(xsl);
        },
        dataType: 'xml'
    });
}

注意:不要尝试使用 xhrFields 设置 - jQuery 不会处理 Chrome(和其他浏览器?)在尝试设置 responseType 为无效值。这需要封装在 try/catch 中,最好的方法是在 beforeSend 函数中。

关于javascript - 在 IE 10 中转换 XML AJAX 响应时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13652932/

相关文章:

javascript - 当我将 SVG 转换为 Raphael JS 对象时,路径不显示

c# - 如何最好地从方法中测试 XML 的有效性?

javascript - 日期选择器弹出窗口不起作用

javascript - 将 OnClick 事件添加到条形图

jquery autocomplete - 如何显示字段 1 + 字段 2 并选择后,只需在文本框中填写字段 1

javascript - 以每秒相同的速度将 div 移向鼠标

javascript - 如何在鼠标进入 div 时运行函数,反之亦然?

java - 通过套接字和流的 JAXB - 阅读器 block

javascript - 如何制作 svg 元素(例如矩形)scrollIntoView?

javascript - 从节点返回的 json 中的斜线