XML mit JS verarbeiten, das mit PHP erstellt wurde

Jary90

Grünschnabel
Hey Leute,

Folgendes Problem:

Ich wollte Daten auf einer Webseite an verschiedenen Stellen austauschen.
Da das meinem Wissen nach mit einer einfach php Datei nicht möglich ist, habe ich dafür mir AJAX mit XML angeschaut.

Jetzt habe ich mir aus verschiedenen Vorlagen etwas zusammengebaut und die XML Datei wird auch erstellt, wie gewollt, sie wird auch auf dem Server abgelegt und ich kann sie anzeigen, da sieht es soweit auch gut aus.

Aber ich kann mit JavaScript nicht drauf zugreifen.

Wäre super wenn mir jmd Hinweise geben könnte, wo ich Fehler gemacht habe ;)

So hier erstelle ich meine XML Datei:

$dom = new DOMDocument('1.0', 'utf-8');
$root = $dom->createElement('Chunk');
$dom->appendChild($root);

$root->appendChild($KnotenEbene1C1 = $dom->createElement("CHUNKTL"));
$root->appendChild($KnotenEbene1C2 = $dom->createElement("CHUNKTC"));
$root->appendChild($KnotenEbene1C3 = $dom->createElement("CHUNKTR"));
$root->appendChild($KnotenEbene1C4 = $dom->createElement("CHUNKML"));
$root->appendChild($KnotenEbene1C5 = $dom->createElement("CHUNKMC"));
$root->appendChild($KnotenEbene1C6 = $dom->createElement("CHUNKMR"));
$root->appendChild($KnotenEbene1C7 = $dom->createElement("CHUNKBL"));
$root->appendChild($KnotenEbene1C8 = $dom->createElement("CHUNKBC"));
$root->appendChild($KnotenEbene1C9 = $dom->createElement("CHUNKBR"));

und innerhalb einer Schleifenstruktur dann:

${'KnotenEbene1'.$ChunkFeld}->appendChild(${'KnotenEbene2'.$ChunkFeld} = $dom->createElement("EL"));
${'KnotenEbene2'.$ChunkFeld}->appendChild(${'KnotenEbene3'.$ChunkFeld.'E01'} = $dom->createElement("T", $ChunkTyp[$aa]));
${'KnotenEbene2'.$ChunkFeld}->appendChild(${'KnotenEbene3'.$ChunkFeld.'E02'} = $dom->createElement("X", $ChunkxKoord[$aa]));
${'KnotenEbene2'.$ChunkFeld}->appendChild(${'KnotenEbene3'.$ChunkFeld.'E03'} = $dom->createElement("Y", $ChunkyKoord[$aa]));
${'KnotenEbene2'.$ChunkFeld}->appendChild(${'KnotenEbene3'.$ChunkFeld.'E04'} = $dom->createElement("N", $ChunkName[$aa]));
${'KnotenEbene2'.$ChunkFeld}->appendChild(${'KnotenEbene3'.$ChunkFeld.'E05'} = $dom->createElement("S", $ChunkSName[$aa]));
${'KnotenEbene2'.$ChunkFeld}->appendChild(${'KnotenEbene3'.$ChunkFeld.'E06'} = $dom->createElement("Z", $ChunkZunft[$aa]));
${'KnotenEbene2'.$ChunkFeld}->appendChild(${'KnotenEbene3'.$ChunkFeld.'E07'} = $dom->createElement("G", $ChunkGesamt[$aa]));
${'KnotenEbene2'.$ChunkFeld}->appendChild(${'KnotenEbene3'.$ChunkFeld.'E08'} = $dom->createElement("SS", $ChunkLSSieger[$aa]));
${'KnotenEbene2'.$ChunkFeld}->appendChild(${'KnotenEbene3'.$ChunkFeld.'E09'} = $dom->createElement("SZ", $ChunkLSZeit[$aa]));
${'KnotenEbene2'.$ChunkFeld}->appendChild(${'KnotenEbene3'.$ChunkFeld.'E10'} = $dom->createElement("AS", $ChunkLASieger[$aa]));
${'KnotenEbene2'.$ChunkFeld}->appendChild(${'KnotenEbene3'.$ChunkFeld.'E11'} = $dom->createElement("AZ", $ChunkLAZeit[$aa]));




und das hier ist meine JavaScript Datei:

function Aufruf(str){
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
} else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
alert(xmlhttp.responseXML);
alert('hallo' + xmlhttp.responseText.getElementsByTagName('Chunk')[0].getElementsByTagName("CHUNKTL")[0].getElementsByTagName("EL")[0].childNodes[0].nodeValue)
}
}
xmlhttp.open("GET","Ajax/Kartendaten.php?"+str,true);
xmlhttp.send();

}


responseText statt responseXML gibt mir zwar was aus aber von der Logik her verstehe ich schon, wieso ich da eventuell nicht auf die DOM-Elemente zugreifen kann.

Der erste Alert gibt null aus und der 2te alert gibt gar nichts mehr aus.


Kann mir den jmd bei dem Problem helfen oder kennt jmd ne Möglichkeit mittels PHP (ohne XML) verschiedenen Stellen im Code zu verändern.


Vielen vielen lieben Dank für eure Zeit :)
 
Sofern du noch die möglichkeit hast es zu ändern, wechsel zu JSON

In PHP:
Code:
$data = array(
   'name' => 'Hans'
   'gesicht' => array(
       'augen' => 'braun'
   )
);
echo json_encode($data);

In JavaScript:
Code:
    // hole Daten als variable data
    JSON.parse(data);
    console.log(data.name); // gibt hans aus
    console.log(data.gesicht.augen); // gibt braun aus

vorteil von json gegenüber xml ist viel weniger overhead (also unnützer Datenkram) und viel leichter zu händeln sowohl in php als auch in javascript.
 

Neue Beiträge

Zurück