繁体   English   中英

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

[英]JQuery's ajax function stripping HTML tags from XML

好的,我正在从 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方法(参考)来获取 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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM