仅在 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 有什么问题吗?
最佳答案
您可以通过将 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/