2011-07-22 30 views
0

最近別のXMLファイルからHTMLドキュメントに要素タグを読み込もうとすると、javascriptに関する問題が発生しました。 XMLHttpRequestまたはactiveX(インターネットブラウザによって異なる)を正しく有効にしていることはわかっていますが、xmlファイルを取得してタグにアクセスする際に問題が発生しています。ファイルを開くためには、私が使用してみました:Javaスクリプトでxml DOM(ファイルから)を解析できません

xhttp.open("GET",filepath,false); 
xhttp.send(); 
xmlDoc=xhttp.responseXML; 

コードは、最初の行を過ぎてそれを作るように見えますが、それは、第二にまでトリップします。私は誰かが.send()の機能を明確にすることができるかどうか、またサーバーのアクセス権が誤っている可能性があるかどうか疑問に思っています。 IE 7/8では、このコードブロックが実行されると「アクセスが拒否されました」と表示されます。

+0

をファイルパス別のドメインを指していますか? –

+0

ファイルパスは、このコードが実行されるファイルと同じドメイン内にあるファイルを指します。説明のおかげで – Louis

答えて

2

リソースにアクセスしたときに同じドメインにajaxリクエストが送信されていることを確認してください。

ここにあなたのコードサンプルを取ると、

xhttp.open("GET",filepath,false); 
xhttp.send(); 

あなたはHTTPメソッドのGETとリソースのために要求しました。この要求は、send()メソッドが仕様[1]に従ってXHRオブジェクトに対して呼び出された後にのみ起動されます。メソッドがGETの場合、send()の引数は無視されます。

今XHRオブジェクトが作成されると、それはそのような

  • よう2】異なる状態を経由UNSENT(数値0)
  • が開放(数値1)
  • HEADERS_RECEIVED(数値2)
  • LOADING(数値3)
  • DONE(数値4)

リクエストが発生した(つまりsend()が呼び出された)瞬間、xhrオブジェクトの状態はOPENEDになります。

ここで、コード "xmlDoc = xhttp.responseXML;"の3行目を見ると、コンテンツを読み込もうとしている状態がはっきりしていません。状態は下記のようちょうどあなたのコードを修正する4かDONE

に達したときにコンテンツを読むための最良の方法は次のとおりです。

var xhr = new XMLHttpRequest(); 
    xhr.open("GET", somefilepath, true); 
    xhr.send(); 
    xhr.onreadystatechange = function() { 
    if(this.readyState == 4) { 
     xmlDoc=xhr.responseXML; 
    } 
    } 
+0

;オンラインリソースは、時々、これらのようなトピックでは理解しにくい場合があります。 – Louis

関連する問題