0

次のコードを関数に配置しました。関数が呼び出されると、XMLファイルが読み込まれ、メッセージボックスに表示されます。

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

  xmlhttp.onreadystatechange=function()
   {
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
     alert(xmlhttp.responseText);

     } else
     {
     alert('Panel not communicating.Reason: '+xmlhttp.status);
     }
   }

xmlhttp.open("POST","myfile.xml",false);
xmlhttp.send();

上記のコードは、意図したとおりにすべてを実行します。

ただし、ページの上部に次のコードを追加するとすぐに次のようになります。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

関数をロードすると、次のメッセージが表示されます。

Panel not communicating.Reason: 200

ただし、XMLファイルは希望どおりに読み込まれます。

周りを検索した後、xmlhttpstatus200は「OK」を意味すると表示されます

このメッセージが表示される理由を誰かが知っていますか?

4

2 に答える 2

1

これはおそらくxmlhttp.readyState、4 (「完了」) 以外の状態に移行していることを意味します。これは、ページ全体がすぐにダウンロードされない場合に発生する可能性があります。関数はxmlhttp.readyState != 4、それをエラー状態として扱うのではなく、おそらくすぐに戻る必要があります。

また、ここでは jQuery などの Javascript フレームワークの使用を強く検討する必要があります。これにより、多くの不要な労力を節約できます。たとえば、ここにあるすべてのコードは次のように縮小できます。

$.post("myfile.xml", function(data) {
    alert(data);
}).error(function() {
    alert("Panel not communicating.");
});
于 2012-09-28T02:21:11.960 に答える
0

あなたが追加したコードは XML で表示されるはずではないと思います。それは HTML 用だったので、ブラウザがファイルの解析に失敗するxmlhttp.readyState==2可能性があります。

于 2012-09-28T02:21:23.070 に答える