Ajax和jQuery XML解析问题

时间:2016-04-28 16:50:40

标签: jquery ajax xml

问题:它只为每个元素添加“undefined”。

我已经阅读了两个小时的大部分时间来尝试解决这个问题,但已经耗尽了资源。很抱歉,如果问了很多这个问题。

我正在尝试获取XML响应并将其转化为有意义的内容。到目前为止,我已经使用了data.gov数据集来测试它。

我的代码:

<!DOCTYPE html>
<html>
<head>
 <title>jQuery and XML</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta name="language" content="en" />
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body

<div id="output"></div>

<script type="text/javascript">
$(document).ready(function(){
 $.ajax({
  type: "GET",
  dataType: "xml",
  url: "https://health.data.ny.gov/api/views/wssx-idhx/rows.xml",
  success: function(xml){
        $(xml).find("row").each(function(){
            $("#output").append($(this).attr("facility_name") + "<br />");          
        });
    }
 });
});
</script>


</body>
</html>

例如,我正在测试的网址将此作为回复:

<response>
<row>
  <row _id="48" _uuid="760E4665-B5D8-489A-ACC3-9D649D4F1989" _position="48" _address="http://health.data.ny.gov/resource/wssx-idhx/48">
  <facility_name>Orchard Grove Residences</facility_name>
  <address>2000 Southwestern Drive W. E.</address>
  <county>Chautauqua</county>
  <city>Jamestown</city>
  <zip>14701</zip>
  <.....>
</row>
<response>

这只是XML响应中的众多元素之一。我觉得这里有一些简单的东西让我失踪,或者我的思维过程出现了根本性的错误。

2 个答案:

答案 0 :(得分:0)

facility_name不是row的属性,它是子节点。 $(this).attr("facility_name")将检索看起来像<row facility_name=""...>的内容,这不是您想要的内容。

您需要使用$(this).find("facility_name")来获取子节点。因为只有一个你可以获得数组中的第一个项而不是另一个.each

答案 1 :(得分:0)

您希望在XML中附加每个facility_name的{​​{1}}子项的文本。

因此,您无法使用row。而是写

attr