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

Rus*_*ell 1 html javascript xml ajax jquery

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

例如,

XML文件中的数据:

<transcript><p>Hello, world</p></transcript>
Run Code Online (Sandbox Code Playgroud)

网页上的所需输出:

<p>Hello, world</p>
Run Code Online (Sandbox Code Playgroud)

实际产量:

Hello World
Run Code Online (Sandbox Code Playgroud)

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

$(xmlData).find('item').each(function() {
        var n = $(this).find('transcript').text();
Run Code Online (Sandbox Code Playgroud)

我试过使用JQuery的'.html()',但它返回null.我能解决这个问题最简单的方法是什么?最好不要改变我已经做过的太多.

提前致谢.

Cym*_*men 6

使用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);
        }
    });
});?
Run Code Online (Sandbox Code Playgroud)

关键是这一行:

var html = $(xml).find('transcript').children();
Run Code Online (Sandbox Code Playgroud)

并确保将dateType设置为xml.

问题

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

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);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

正如其他人所说,html不会对XML有用.