2016-04-28 3 views
0

Проблема: она только добавляет «неопределенный» для каждого элемента.Ajax и jQuery Проблемы синтаксического анализа XML

Я читал ссылки в течение большей части двух часов, чтобы попытаться преодолеть эту проблему, но исчерпал ресурсы. Извините, если этот вопрос задан очень часто.

Я пытаюсь получить ответ 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> 

Например, URL я тестирую с дает это как ответ:

<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. Я чувствую, что здесь есть что-то простое, что мне не хватает, или что-то в корне неверно в моем мыслительном процессе.

+0

Немного не по теме, но есть причина, что вы используете версию JQuery из [февраль 2010] (https://github.com/jquery/jquery/releases?after=1.4.4rc3) (1.4.2)? –

+0

Я проходил несколько уроков. Должно быть, вставляется действительно старая ссылка на библиотеку, потому что учебник, вероятно, был написан примерно в то время. Спасибо за головы! – nethageraba

ответ

0

Вы хотите добавить текст файла facility_name каждого из row в XML.

Поэтому вы не можете использовать attr. Вместо того, чтобы написать

$("#output").append($(this).find("facility_name").text() + "<br />"); 
+0

Ах, я знал, что с моей стороны было какое-то фундаментальное недоразумение. Спасибо, теперь это намного больше. – nethageraba

0

facility_name не является атрибутом row, это дочерний узел. $(this).attr("facility_name") будет извлекать то, что выглядит как <row facility_name=""...>, что не то, что вы хотите.

Чтобы получить дочерний узел, вам необходимо использовать $(this).find("facility_name"). Поскольку есть только один, вы можете просто получить первый элемент в массиве вместо того, чтобы делать еще один .each.

+0

Теперь это имеет смысл. Благодаря! – nethageraba

Смежные вопросы