javascript - JQuery 的 ajax 函数从 XML 中剥离 HTML 标签

标签 javascript jquery html xml ajax

好的,我正在从 XML 文件中提取数据以动态填充我的网页元素。我的问题是,当我使用 JQuery .ajax 提取 xml 文件时,它会去除我的 HTML 标签。

例如,

XML 文件中的数据:

<transcript><p>Hello, world</p></transcript>

网页上期望的输出:

<p>Hello, world</p>

实际输出:

Hello World

这是我的 ajax 函数中的代码:

$(xmlData).find('item').each(function() {
        var n = $(this).find('transcript').text();

我尝试使用 JQuery 的“.html()”,但它返回 null。我能解决这个问题的最简单方法是什么?最好不要对我已经完成的工作做太多改动。

提前致谢。

最佳答案

使用 text 将按照您的经验去除标签。您可以改为在转录节点上使用 jQuery children 方法 ( reference ) 来获取 HTML。这是一个工作示例:http://jsfiddle.net/gjwyd/

$(document).ready(function() {
    $.ajax({
        type: "POST",
        url: "/echo/xml/",
        dataType: "xml",
        data: {
            xml: "<transcript><p>Hello, world</p></transcript>"
        },
        success: function(xml) {
            var container = $('#content');
            var html = $(xml).find('transcript').children();
            container.html(html);
        }
    });
});​

关键是这一行:

var html = $(xml).find('transcript').children();

并确保将 dateType 设置为 xml。

问题

当从 XML 响应中获取 HTML 时,它可能会丢失默认样式。例如,段落标记可能没有 display: block。重置样式可能是解决此问题的一种方法。一种更正确且可能更简单的方法是将 HTML 内容放在 XML 中的 CDATA 中,正如其他评论者之一所建议的那样。

http://jsfiddle.net/tZJQp/

$(document).ready(function() {
    $.ajax({
        type: "POST",
        url: "/echo/xml/",
        dataType: "xml",
        data: {
            xml: "<transcript><![CDATA[<p>Hello, world</p><p>Bye</p>]]></transcript>"
        },
        success: function(xml) {
            var container = $('#content');
            var html = $(xml).find('transcript').text();
            container.html(html);
        }
    });
});

正如其他人所说,html 不适用于 XML。

关于javascript - JQuery 的 ajax 函数从 XML 中剥离 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13689605/

相关文章:

javascript - 将 Highstock 缩放按钮放置在 <div> 内的图表区域之外

jquery - 按回车键隐藏 iPad 键盘

javascript - jQuery:如何在循环中附加数组项?

jquery - 如何识别输入中的输入字符?

javascript - 通过升级保存 HTML5 Canvas

用于分辨率检测的 JavaScript,但似乎返回错误

javascript - 如何为 d3 中的可视化创建一个函数而不是 3 个或更多函数,然后在将鼠标悬停在节点上时添加突出显示

javascript - 将值分配给另一个具有动态分配键的对象内的对象

javascript - d3 : HTTP404 NOT FOUND error

javascript - 用于显示图像的弹出窗口在 IE 中不起作用