2012-03-14 12 views
1

XMLファイルを作成しましたが、Webブラウザを使用してアクセスしようとしていました。 私はIEを使いましたが、スクリプトは本当にうまくいっていましたが、他のブラウザで開いてみるとうまくいきませんでした。 調査の結果、私はそれがMicrosoftと接続しているJavaScriptの最初の行にあるインスタンスのActiveXコンテンツにあることを知りました。私は、自動的にブラウザの性質を確認する必要があります別のコード見つけ理由です
:実際にブラウザのバージョンを検出するXML/Javascript

<script type="text/javascript"> 
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } else { // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open("GET", "emp.xml", false); 
    xmlhttp.send(); 
    xmlDoc = xmlhttp.responseXML; 

    //function loadXML(xmlFile) 
    //{ 
    //xmlDoc.async="false"; 
    //xmlDoc.onreadystatechange=verify; 
    //xmlDoc.load(xmlFile); 
    //xmlObj=xmlDoc.documentElement; 
    //} 

は、単に関数の最後の2行は、XMLファイルをロードするのに十分なされています。前の2行は、後でXMLファイルデータを操作するために使用するJavaScript関数が、初期化されていないオブジェクトに対して機能を実行しないように記述されています。したがって、関数* verify() *が呼び出されます。

<?php 
//function verify()/ 
    //{ 
     // 0 Object is not initialized 
     // 1 Loading object is loading data 
     // 2 Loaded object has loaded data 
     // 3 Data from object can be worked with 
     // 4 Object completely initialized 
     //if (xmlDoc.readyState != 4) 
    // { 
     // return false; 
     //} 
    //} 
?> 

loadXML('emp.xml'); 
alert(xmlDoc.childNodes(0).firstChild.text); 
alert(xmlDoc.childNodes(3).childNodes(1).firstChild.text); 

JScriptランタイムエラーアクセスが拒否されました。どうすればよいですか?

MY NEW CODE:

if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp = new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.open("GET","http://www.multimediaprof.com/test/emp.xml",true); 
xmlhttp.send(); 
xmlDoc=xmlhttp.responseXML; 
alert(xmlDoc.childNodes[1].firstChild.text); 
</script> 
</head> 
</html> 

JQUERY答えは、どのように私はそれを実装していますか?

+0

私は私が間違っていない場合は、異なるリンクから物事をとっていると思います。以下のリンクをお読みください: linguini

+0

私に与えられた第2のリンクは、私が始めたもので、IE以外のブラウザでは動作しません。なぜなら、私は2つの異なるリンクをまとめて、テスト機能が含まれているリンクを試してください、JSランタイムエラーが発生し、どのブラウザでも機能しません...任意の考えですか? –

+0

ここでは、非常に簡単な例があります。http://www.w3schools.com/dom/dom_loadxmldoc.aspファイルをローカルにロードする方法を覚えておいてください。ファイルのパスを確認してください 'xmlDoc = loadXMLDoc( "books.xml");'あなたはこのようなものを与えることができます 'File:// C:/text.xml' – linguini

答えて

1

問題は、コンピュータ上のファイルにfile://プロトコルでアクセスしようとしていることです。これはセキュリティリスクであり、ほとんどのブラウザでは許可されていません。

この問題を解決するには、ローカルまたはオンラインのサーバーでファイルをホストすることです。

Google Chromeを使用している場合は、--allow-file-access-from-filesフラグを付けて動作させると効果的です。

編集:私はあなたがここに構文エラーがあると思う:

alert(xmlDoc.childNodes(0).firstChild.text); 

childNodesオブジェクトが配列ではなく、機能です。したがって、かっこではなく角括弧[]を使用する必要があります。()

EDIT2:あなたはjQueryのを使用している場合は、次のように、構文は次のとおりです。

$.get("file.xml", function(data){ 
    //Your data is accessible through the data variable here! 
    console.log("Data Loaded: " + data); 
}); 

さらにドキュメント:http://api.jquery.com/jQuery.get/

+0

あなたのソリューションはアクセスエラーを消しました。新しいエラーは、彼はchildenodesを見つけることができないということです、ブラウザテスト機能を置く前に、私は警報の結果を見ることができたことに注意してください、任意の考えplz –

+0

私の悪い、それは働いた..ローカルXMLファイルにアクセスするための知識を共有できますか?私はそれで非常に新しいです –

+0

NBそれはIEのほかのブラウザで動作しませんでした...何をする? –

1
<html> 

    <body> 
     <script type="text/javascript"> 
      if (window.XMLHttpRequest) { 
       xhttp = new XMLHttpRequest(); 
      } else // for older IE 5/6 
      { 
       xhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xhttp.open("GET", "/Users/kart2006/Desktop/emp.xml", false); 
      xhttp.send(""); 
      xmlDoc = xhttp.responseXML; 

      document.write(xmlDoc.documentElement.nodeName + " loaded"); 
      var str = xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue; 
      alert(str); 
     </script> 
    </body> 

</html> 

XMLファイル:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!-- Edited by XMLSpy® --> 
<note> 
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 

    <body>Don't forget me this weekend!</body> 
</note> 

覚えておいてください、私は 'emp.xml'ファイルをMacにロードしました。 Windowsのファイル://」で

enter image description hereenter image description here

+0

あなたのコードは、しかし、ちょうどクロムにもファイアフォックスでも運動しなかった...何をする? –

+0

@ELias Rahme:Firefox、Safariブラウザで正常にテストしました。 – linguini

+0

Google Chromeの場合はこちらをご覧ください:http://code.google.com/p/chromium/issues/detail?id=988 – linguini

関連する問題