2

単純な問題であるべきことについて、ここで私の知恵の終わりに近づいています。JavaScript を使用して、非常に単純な XML ドキュメントから非常に単純な HTML ドキュメントに値を解析して返すことを試みています。私の問題は、スクリプトがこれを拒否することです。XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<man>
  <name>Nicholas</name>
</man>
<man>
  <name>Peter</name>
</man>
</root>

これは厳密に私自身の教育のためであるため、無意味なタグです。

JavaScript:

<script>
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","dname",false);
xmlhttp.send();
return xmlhttp.responseXML; 
}

xmlDoc =     loadXMLDoc("https://dl.dropboxusercontent.com/u/22818342/Testing/javascript_test4.xml");

x = xmldoc.getElementsByTagName("name");

var content = function()
{
    document.write(x[0].childNodes[0].nodeValue);
};
</script>

コードの HTTP フェッチ部分を有効にするために、Dropbox パブリック フォルダーを使用していることに注意してください。これらのファイルはすべて同じディレクトリにあります。

(関連する) HTML:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link href="https://dl.dropboxusercontent.com/u/22818342/Testing/javascript_test3.css" rel="stylesheet" type="text/css" />
<body>
<button type="button" onclick="content()">Click Me</button>
<body>

また、ボタンをクリックすると、表向きはcontent()関数が起動されますが、何も起こらないことに注意してください。すべてが上書きされているわけではありません。

その他の関連情報: --Google Chrome でこれをテストしています --W3Schools の XML 解析デモと、私と同様の問題を抱えているユーザーからの別の StackOverflow 投稿から、このコードの多く (これも学習目的のみ) を取り上げました。 . どちらの場合も、コードは正常に実行されました。物事がうまくいかないのは、私がそれを実行しようとしたときだけです。-- 私は Javascript と XML DOM にかなり慣れていないので、どこかで基本的なエラーを犯した可能性は十分にあります。

コミュニティが提供できる支援をいただければ幸いです。

4

3 に答える 3

2

手始めに、組み込みのデバッグ ツール (開発者ツールと呼ばれる) を調べてみましたか? 基本的な紹介については、https ://developers.google.com/chrome-developer-tools/ を参照してください。リンクに記載されているように開発者ツールを開くと、投稿したコードが [コンソール] タブに入る途中でいくつかのエラーを吐き出します。

開発者ツールが表示するコードに関する 2 つの問題:

  • 変数にアクセスしようとすると、xmlDocケースが正しくありません。
  • loadXMLDoc 関数では、open 呼び出しが"dname"(文字列として) という相対リソースを要求しています。実際に変数を使用しようとしているように見えますdname

したがって、修正版は次のようになります。

function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET",dname,false);
xmlhttp.send();
return xmlhttp.responseXML; 
}

xmlDoc =     loadXMLDoc("https://dl.dropboxusercontent.com/u/22818342/Testing/javascript_test4.xml");

x = xmlDoc.getElementsByTagName("name");

var content = function()
{
    document.write(x[0].childNodes[0].nodeValue);
};
于 2013-05-30T02:49:09.493 に答える
0

Firefox で ctrl+shift+j キーを使用してエラーを確認します。firebug を使用している場合は、firebug の [NET] メニュー タブに移動すると、リクエストとレスポンス、またはエラーを確認できます。

xml 解析の詳細については、このサイトをご覧くださいXML DOM

于 2013-05-30T03:52:03.423 に答える