无法使用jQuery获取xml数据

时间:2017-05-23 07:27:51

标签: jquery xml get

我试图从服务器获取XML数据,XML格式如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<env:Envelope xmlns:env="httpd://www.w3.org/org/2003/05/spap-envlop" env:encodingStyle="httpd:
//www.w3.org/org/2003/05/spap-envlop">
    <env:Body>
        <ip>0.0.0.0</ip>
        <domain>Website</domain>
    </env:Body>
</env:Envelope>

我可以使用$.get方法查看来自Google Chrome控制台的所有XML数据:

$(function() {
    $.get("../setup/web.xml", function (data) {
        console.log(data)
    });
});

在Google Chrome控制台消息中,它显示&#34; #document&#34;一个小箭头标志告诉我这是一个折叠消息,然后我点击箭头标志,我的XML数据出现了。但我仍然无法弄清楚为什么我不能从下面的代码中获取XML标记的文本:

$(function() {
    $.get("../setup/web.xml", function (data) {
        $("#ip").text(data.ip) //undefined
        $("#domain").text(data.domain) //undefined
    });
});

甚至是这个:

$(function() {
    $.get("../setup/web.xml", function (data) {
        $(data).find("env:Body").each(function () {
            $("#ip").text(ip) //undefined
            $("#domain").text(domain) //undefined
        }
    });
});

1 个答案:

答案 0 :(得分:1)

问题是由于您访问返回数据的方式。您使用的是点表示法,它是用于访问对象的方法。您正在返回XML,因此您需要遍历节点以查找所需的值。另请注意,您需要在节点名称中转义:,否则jQuery会将其解释为伪造的选择器。试试这个:

// imagine this is the response text from the request
var data = '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><env:Envelope xmlns:env="httpd://www.w3.org/org/2003/05/spap-envlop" env:encodingStyle="httpd://www.w3.org/org/2003/05/spap-envlop"><env:Body><ip>0.0.0.0</ip><domain>Website</domain></env:Body></env:Envelope>';

// this would be inside the callback function of your AJAX request:
var $xml = $(data);
$xml.find('env\\:Body').each(function() {
  var ip = $(this).find('ip').text();
  var domain = $(this).find('domain').text();

  $("#ip").append(ip);
  $("#domain").append(domain);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="ip"></div>
<div id="domain"></div>