0

基本的な XML 検索を実行しようとしています。このコードは Firefox と Opera で期待どおりに機能します。つまり、XML ドキュメントの「タイトル」ノードのテキスト値で警告します。しかし、IE7 では、この行から「オブジェクトが必要です」というメッセージが表示されます。

  x=xhttp.responseXML.getElementsByTagName("title")[0].childNodes[0].nodeValue;
  alert(x);

ところで、responseText(およびtxtファイル)で正常に機能していました。しかし、IEでそれを機能させるに、ActiveXオブジェクトを使用する必要がありました...奇妙なb/c XMLHttprequestオブジェクトをサポートしていると思いました。もしかしてこれが何か関係あるの?

[編集]

わかりました、行をこれに置き換えました

    x=xhttp.responseXML.childNodes.length;
    alert(x);

FFには2つのノードがあり、IEには0があります。したがって、明らかに0の子ノードを読み取ることはできません。空白と何か関係があると思いますか?何を与える?

[アップデート]

それはすべて、msx​​ml.DOMDocument と Msxml.XMLHTTP ActiveXObjects の使い方を知らないことに関係しています。次のリンクでこれらのオブジェクトについて学習しています。

JScript で DOM を使用してプログラミングする

数日以内に私の質問に答えます...

4

2 に答える 2

1

私はそれを考え出した。これまでのところ、ハードドライブ上のフォルダからこれを開発していることについては触れませんでした。それが問題でした。このスレッドでwebdeveloper.comで見つけた答えの「Ultimator」を引用したいと思います:http ://www.webdeveloper.com/forum/showthread.php?t = 147342

IE7のネイティブXMLHttpRequestは、同じディレクトリ内のファイルに対しても無力ですが、同じ状況では、ActiveXはIE7を正常に提供できます。その理由は、IE7のXMLHttpRequestオブジェクトがWebに限定されているためです。したがって、コード内のIE7はActiveXではなくXMLHttpRequestを介して提供されているため、「IE7でアクセスが拒否されました」というエラーが発生します。一方、FirefoxのXMLHttpRequestオブジェクトは、ローカルリクエストとWeb上のリクエストの両方を許可します。

実は、なぜ必要な物が起こったのかさえ分かりません。しばらくの間、msxml.DOMDocument.3.0オブジェクトのみを使用するように切り替え、ローカルで機能するようになりました。その後、IE7でXMLHttpRequestがどのようにサポートされているかについて読み続けたので、そのオブジェクトの作業に戻りました。MSDNのチュートリアルを読んだ後、「仮想ディレクトリ」を作成してファイルを使用することを提案していることに気付きました。

http://localhost.

それから私はアイデアを思いつきました、まあ、なぜ私はリクエストをインターネット上のどこかに向けることができないのですか?そして私はそうしました:w3schoolsのサンプルXMLファイルに。何だと思う?IE7で動作し、selectSingleNodeで必要なテキストを取得できました。しかし、Firebugでは、xmlDoc.responseXMLはnullであると述べています。面白い...

そのため、最終的に、自分のマシン(Vista Home Premiumを使用しています)でIISをアクティブ化し、ローカルホストを使用することにしました。機能した!FF、IE、Chrome、Operaは同じ方法でファイルにアクセスしました。したがって、私が学んだ教訓は、ローカルホストを使用してサーバーの動作をシミュレートできることです。これは、ローカルで開発する場合に役立ちます。

FFがリモートファイルにアクセスせず、IEがアクセスできるので、実際にはわかりません...まあ、今のところ私の問題は解決しました。将来のフラストレーションを報告します。読んでくれてありがとう!

于 2010-06-25T13:37:55.147 に答える
0

それが機能しない理由はありません。たとえば、次のようになります。

var xml = response.responseXML, 
    node = xml.getElementsByTagName('child')[0];

alert(node.childNodes.length);

次の XML を使用する

<root>
    <child>
        <foo />
    </child>
</root>

IE7 で実行すると、正しく 1 と表示されます。応答のコンテンツ タイプを text/xml に適切に設定していますか?

于 2010-06-24T15:29:48.237 に答える