2011-01-03 13 views
2

ウェブサーバー(www.example.com/example.xml)にxmlドキュメントがあるとします。私のメインページで、その文書を文字列として取得したいのであれば、どうしたらいいですか?Javascriptを使用して同じドメインのHTMLを取得する

私はxmlhttprequestを試しました - 多分私はそれを間違って使用していますか?これを「未定義」として返します。助けて?

  var xml_page = new XMLHttpRequest(); 
      xml_page.open("GET", "http://www.samedomain.com/example.xml", true); 
      if (xml_page.readyState == 4 && xml_page.status == 200) { 
       var data = xml_page.responseText; 
      } 
      document.write(data); 

答えて

5

データBASはほとんどとして-は、あなたのコードの作業作業を取得するには、フェッチされdocument.write発生する前にあなた、それは同期リクエストする必要があるだろう、このような:

xml_page.open("GET", "http://www.samedomain.com/example.xml", false); 
xml_page.send(null); 

しかし、それはこのように、(document.write ...も良いことを排除する)非同期それを維持する方が良いでしょう:

xml_page.open("GET", "http://www.samedomain.com/example.xml", true); 
xml_page.onreadystatechange = function() { 
    if (xml_page.readyState == 4 && xml_page.status == 200) { 
    alert(xml_page.responseText); 
    } 
}; 
xml_page.send(null); 
+0

@ehfeng:ニックさんは '警告を行う(xml_page.responseText);'、あなたがより有効に 'のdocument.getElementById( 'ターゲット')のような何かを行うことができますinnerHTMLの+のxml_page。 responseText; 'は、あなたが元々行っていたものに非常に近いものです。 XMLを表示したい場所に 'id = 'target''を含む' div'を含めます。 (上記の両方の場合、元と私の「innerHTML」は、XML対HTMLのことを処理するためにブラウザに依存しています;本当に大丈夫かどうかは、ドキュメントとブラウザに依存します... ) –

-1

jQuery.getを使用しようとすると、はるかに簡単でクロスブラウザです。

+1

これは手元の問題にはあまり役に立ちません。要求が終了するまで、 'data'は存在しません。 – alex

+0

jQuery.ajaxをasync = false引数で使用する:http://api.jquery.com/jQuery.ajax/ –

0

はこれを試してみてください:

var xml_page = new XMLHttpRequest(); 
xml_page.open("GET", "http://www.samedomain.com/example.xml", true); 
if (xml_page.readyState == 4 && xml_page.status == 200) { 
    var data = xml_page.responseText; 
    document.write(data); 
} 
関連する問題