jquery - 使用 jQuery.find() 和 XML 文档获取 HTMLUnknownElement

标签 jquery xml ajax internet-explorer

我正在尝试通过 Ajax 请求加载 XML 文档(特别是 RSS 提要),对其进行解析,然后将一些基于所述提要的信息插入到我的页面中。该代码在 Firefox、Opera、Chrome 和 Safari 中运行良好,但在 IE7 中不行。想想吧。

经过一些初步调试后,我发现 XML 字符串正在通过请求检索,并且在尝试从文档中解析节点时得到的特定节点类型是HTMLUnknownElement

相关代码如下:

$.get('feed.php', function(oXmlDoc) {

    var titles = $(oXmlDoc).find('title');
    var dates = $(oXmlDoc).find('pubDate');

    for(var i = 0; i < 5; i++) {
        parseNodes(titles[i].firstChild.nodeValue, dates[i].firstChild.nodeValue));
    }

});

parseNodes 函数实际上从未被命中,因为 IE 无法访问 firstChild,因此也无法访问 nodeValue

预先感谢您提供有关如何解决此问题的任何想法和/或建议。

最佳答案

我能够解决这个问题,但它需要一些特定于 IE 的代码才能解决问题。本质上,这就是我最终必须解决问题的方法。

首先,我验证了我的服务器端代码返回了正确的内容类型:

header('Content-Type: application/rss+xml');

之后,我检查了当前正在访问该页面的浏览器:

if($.browser.msie) {
    // ie-specific code (see below)
} else {
    // code as posted in the question
}

为了更好地控制 ajax 请求,我选择使用 jQuery 的 $.ajax 函数而不是 $.get 函数。

var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
$.ajax({
    url: "feed.php",
    processData: false,
    data: oXmlDoc,
    success: function(sXml) {
        oXmlDoc.loadXML(sXml) 
        var titles = $('title', oXmlDoc);
        var dates = $('date', oXmlDoc);
        for(var i = 0; i < 5; i++) {
            parseNodes(titles[i].childNodes[0].nodeValue, dates[i].childNodes[0].nodeValue));
        }
     }
});

无论如何,它没有我想要的那么优雅,但它完成了工作。

关于jquery - 使用 jQuery.find() 和 XML 文档获取 HTMLUnknownElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/624723/

相关文章:

升级到新的 jQuery 版本后 jQuery 将不会返回数据

javascript - 如何在 javascript 中请求没有 X-REQUESTED-WITH header 的页面

javascript - 事件的动态网格菜单

javascript - 日期时间选择器不工作

python - 如何用Python进行日期推导?

java - 在 java 类中使用 string.xml 资源更改 textView

javascript - 将新代码注入(inject) DOM 的最佳方式是什么?

javascript - 如何从 Blade 模板中的 Javascript 文件重定向 Laravel 路由

jquery - 关于 jQuery load() 的概念

java - DBUnit 忽略 xml 元素