プロが教える店舗&オフィスのセキュリティ対策術

すいません質問があります。

http上でrequest されたxmlファイルのresponseデータをconsole.logに出力したい

例えば、下記のScript tagがあります。これはekidataのapiで山手線情報をreponseで返します。

var scriptElement = document.createElement('script');
scriptElement.setAttribute('type', 'text/javascript');
scriptElement.setAttribute('src', 'http://www.ekidata.jp/api/l/11302.xml');
document.body.appendChild(scriptElement);

私がやりたいのは、このresponseデータの"<station_name>"をconsole.logで出力することです。
http上でリクエストされたデータのResponseデータをconsole.logで出力する方法をずっと模索していますがなかなかうまくいかず。。。

お手数ですがよろしくお願いいたします。

「http上でrequest されたxml」の質問画像

A 回答 (1件)

こんにちは



ご提示のスクリプトだと、スクリプト要素のsrcにxmlデータのアドレスを指定していることになりますが、仮に読み込めてもスクリプトではないので処理できませんよね??

xmlデータをスクリプト内の変数などに取得したいのであれば、ajaxを利用してリクエストする必要があります。
以下などをご参考になさればよろしいでしょう。
https://developer.mozilla.org/ja/docs/AJAX/Getti …


一方で、駅データのサイトの説明を見てみると、xmlデータの他に同様のjsonデータも用意されているようです。
こちらはjsonデータを返すものかと思いきや、どうやらスクリプトを返しているようですので、こちらであればご提示の方法でも利用することが可能です。

xml.onload に取得後の処理を記述しておくと、これをコールバックとしてjsonデータが引き渡される仕組みになっていると思われます。
データを直接javascriptのオブジェクトとして取得できますので、そのまま利用することが可能です。

<サンプル>
var xml = {};
xml.onload = function(data){
var st = data.station_l, n = st.length, i;
for(i=0; i<n; i++) console.log(st[i].station_name);
}
var scriptElement = document.createElement('script');
scriptElement.setAttribute('type', 'text/javascript');
scriptElement.setAttribute('src', 'http://www.ekidata.jp/api/l/11302.json');
document.body.appendChild(scriptElement);


※ あくまでもxmlソースとして取得なさりたいというのであれば、ajaxで取得するようにしてください。
    • good
    • 0
この回答へのお礼

ありがとうございます! jsonではありますが、期待した結果が得られました。
xmlに関してはajaxを勉強して再度トライします。

ありがとうございました。

お礼日時:2017/08/31 18:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!