プロが教えるわが家の防犯対策術!

Google MapsのKMLをJSONで取得したい。

Google Mapsで作成したマイマップのKMLを見るとURLが書かれています。
このURLの末尾を「&output=kml」→「&output=json」

と変更するとJSONで取得できると思うのですが、
実行するとstatus=0となっていまいます。

HTTPヘッダを見る限り200なので取得出来ているようなのですが・・・
なぜでしょうか?教えてください。

===
var jsonUrl = 'url'
var xhr = new XMLHttpRequest();
xhr.open("GET", jsonUrl, true);
xhr.onreadystatechange = function() {
if (xhr.readState ==4 && xhr.status == 200){
var jresult = document.getElementById("json_panel");
jresult.innerHTML += xhr.responseTEXT;
} else {
alert (xhr.statusTEXT);
}
}
xhr.send();

A 回答 (1件)

まず、ご提示のソース正しくないです。


つっこみどころ満載です。
とりあえず、
var jsonUrl = 'url';
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4){
if (xhr.status == 200){
alert(xhr.responseText);
var jresult = document.getElementById("json_panel");
jresult.innerHTML += xhr.responseText;
}else{
alert (xhr.status);
}
}
}
xhr.open("GET", jsonUrl, true);
xhr.send(null);
として下さい。
その上で、0がアラートされれば、アクセスに失敗してるのです。
HTTPヘッダのレスポンスが200でも、外部サイトならアクセス出来ないので、
statusは0のままです。
※クロスドメインアクセスの禁止って知ってますよね!

さらに、JSONがとれたとして、
innerHTMLでつっこんでどおしようってんです。JSONはHTMLじゃないです。
単なるテキストです。
オブジェクト変数につっこんでパースしないと、どおしようもないでしょう。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。

・全体的にXHRの処理はMDCからコピーしたので正しいと思っていました。。。。
https://developer.mozilla.org/ja/XMLHttpRequest
ご指摘ありがとうございます。

・urlの";"は投稿の際の記述漏です。すみません。
・innnerHTMLに突っ込んでるのは動作確認ようでした。
・XHR lv2でクロスドメインで通信できるとあったのでいけるかと思ってました。

頂いたコードでも返ってきたコードは0だったので
クロスドメインだからだめなのだと思います。

おとなしくローカルでやることにします。。。。
本当にありがとうございました。

お礼日時:2010/11/01 19:17

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