2017-03-07 7 views
1

テーブルのHTMLページに.xmlファイルを表示したい。だから私はWebサーバからxmlを取得し、テーブルを作成するためのjavascriptプログラムを書いた。ただし、onreadystatechangeメソッドが呼び出されないため、HTTPRequest Responseは常にnullです。HTMLテーブルにXMLファイルを表示

私のJavaScriptプログラム

function LoadXML(dname) { 
var xhttp; 
if (window.XMLHttpRequest) { 
    xhttp = new XMLHttpRequest(); 
} else { 
    xhttp = new ActiveXObject('Microsoft.XMLDOM'); 
} 
xhttp.onreadystatechange = function() { 
    if (xhttp.readyState === 4 && xhttp.status === 200) { 
     return xhttp.responeXML; 
    } else { 
     return $("#errors").text("XML not found"); 
    } 
}; 
xhttp.open("GET", dname, true); 
xhttp.send(false); 
} 

function UpdateXML() { 
xmlDoc = LoadXML('xml/history.xml'); 
var table = "<tr><th>Auftragsnummer</th><th>Auftraglaufzeit</th><th>Soll-Teile</th><th>Gutteile</th><th>Ausschussteile</th><th>OEE</th></tr>"; 
if (xmlDoc === null) { 
    $("#errors").text("XML document is empty!"); 
} else { 
    var x = xmlDoc.getElementsByTagName("Auftrag"); 
    for (i = 0; i < x.length; i++) { 
     table += "<tr><td>" + 
      x[i].getElementsByTagName("Auftragsnummer")[0].childNodes[0].nodeValue + "</td><td>" + 
      x[i].getElementsByTagName("Aufnahmezeit")[0].childNodes[0].nodeValue + "</td><td>" + 
      x[i].getElementsByTagName("TeileSoll")[0].childNodes[0].nodeValue + "</td><td>" + 
      x[i].getElementsByTagName("Gutteil")[0].childNodes[0].nodeValue + "</td><td>" + 
      x[i].getElementsByTagName("Ausschussteile")[0].childNodes[0].nodeValue + "</td><td>" + 
      x[i].getElementsByTagName("OEE")[0].childNodes[0].nodeValue + "</td></tr>"; 
    } 
} 
document.getElementById("history").innerHTML = table; 
setTimeout(updateTime, 5000); 
} 
window.addEventListener("load", UpdateXML); 

答えて

2

あなたは非同期と同期コードを混合しています。

AJAXリクエストを行うと、コードは実行を継続し、最終的にonreadystatechangeが呼び出されます。データを取得するには、LoadXML関数にコールバックを追加する必要があります。

まず、同期機能と非同期機能について学び、後でAJAXに実装する方法を理解する必要があります。

同期/非同期:https://www.w3schools.com/js/js_ajax_examples.asp

警告What is the difference between synchronous and asynchronous programming (in node.js)

AJAXの例(それはノードは言うものの、基本的にはJavaScriptで)あなたは右のAJAXの例に移動し、ちょうど学習せずに貼り付けコードをコピーした場合非同期と同期の違いは、JavaScriptでこの問題を頻繁に繰り返すことです。

+0

ありがとうございます!!!!!!それは今働いています:) – Ollifred

+1

@Ollifred私はうれしいです:-)あなたはこの答えをupvote/acceptすることができます。また、あなたはあなたのすべての質問を回答とともに行う必要があります。このウェブサイトの要点であり、あなたの比率が低すぎる場合(現在0%)、人々は将来あなたを助けません。 –

関連する問題