2016-04-28 15 views
0

問題:各要素に「未定義」だけが追加されます。AjaxとjQueryのXML解析の問題

私はこの問題を回避するために2時間のうちのより良い部分についてリンクを読んできましたが、リソースを使い果たしました。申し訳ありませんが、この質問は多くの質問です。

私は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はレスポンスとしてこれを提供します:XML応答の多くの要素のひとつである

<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> 

。私は、ここで私が行方不明である単純なものがあるか、または何かが私の思考過程に根本的に間違っているように感じる。

+0

にトピックオフビットを書きますが、あなたは[2010年2月](https://github.com/jquery/jquery/releases?after=1.4.4rc3からjQueryのバージョンを使用している理由があります)(1.4.2)? –

+0

私はいくつかのチュートリアルを行ってきました。このチュートリアルはおそらくその時間の周りに書かれていたので、本当に古いリンクを貼り付けていなければなりません。ヘッドアップをありがとう! – nethageraba

答えて

0

あなたはXML内の各rowfacility_name子のテキストを追加します。

したがって、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")を使用する必要があります。 1つしかないので、別の.eachを実行する代わりに、配列の最初の項目を取得することができます。

+0

それは今私にとって意味があります。ありがとう! – nethageraba