我试图从服务器获取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
}
});
});
答案 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>