XML Antwort in HTML einbinden

AMoKx666

Mitglied
Folgendes Problem:
Ich habe eine Anwendung, die via AJAX Daten an einen Webserver schickt. Die Antwort des Servers kommt als XML an. Die Antwort ist ungefähr so aufgebaut ...

<neues>
<inhalt>
hier steht HTML Code
</inhalt>
</neues>

Ich möchte nun den Inhalt des Knotens <inhalt> auslesen und diesen dann in den body einer bereits bestehenden Seite einbauen.
Leider bekomme ich es irgendwie nicht wirklich so hin, wie ich es haben möchte. Es wird so gut wie nichts aus der Antwort eingebaut in die bestehende Seite. Ausserdem bekomme ich keine Umlaute angezeigt, sondern nur schwarze Vierecke mit einem weissen Fragezeichen darin.
hat jemand ne Idee, wie ich mein Problem lösen könnte ?
 
ich verarbeite responseXML. sollte ich dafür lieber responseText nehmen ?
viel sourcecode zeigen kann ich dir leider nicht zeigen. aber ums mal etwas zu konkretisieren ...
ich habe zwei iframes. die daten die mir der webser zurück liefert kommen in iframe 1 an und sollen in iframe 2 in den body eingebaut werden.
ich hab mir also dann den body geschnappt von iframe 2 mit

var outnode = parent.iframezwei..document.getElementByTagName("body")[0]

geschnappt und hab dann versucht aus der serverantwort beim <inhalt> dessen inhalt zu bekommen. leider bin ich aber quasi mehr oder weniger daran schon gescheitert. wie ich ja bereits geschrieben habe hat er wenn überhaupt, nur wenig des inhalts eingebaut.
habs auch versucht mir die childnodes aus dem <inhalt> tag zu holen, leider auch ohne erfolg. das ganze sah dann so aus :

var update = http_request.responseXML.getElementsByTagName("inhalt")[0]
while(update.hasChildnodes)
{
outnode.appendchild(update.firstchild));
var tmp = update.firstchild
update.removechild(tmp)
}

ich hoffe du kannst mir irgendwie helfen
 
Zuletzt bearbeitet:
Hi,

Zugriff auf das XML-Dokument solltest du so erhalten:
Code:
var update = http_request.responseXML.documentElement.getElementsByTagName("inhalt")[0]
Erwartest du als Antwort des Requests ein XML-Dokument, ist in manchen Nicht-IEs wichtig, den
richtigen mime-type anzugeben.
Code:
// ...
http_request = new XMLHttpRequest();
if(http_request.overrideMimeType){
  http_request.overrideMimeType('text/xml');
}
// ...
Ausserdem solltest du beachten, dass Frame-übergreifende Änderungen am Dokument im IE zu
Zugriffsverletzungen führen können. In einem solchen Fall muss die Funktion, die die Änderungen
durchführen soll, in dem Frame definiert sein, in dem geändert wird. Aufrufen kannst du sie aus dem
anderen Frame heraus.

Vielleicht hilft dir das weiter.

Ciao
Quaese
 
ok, das funktioniert jetzt soweit, aber wie bekomm ich denn den umgekehrten weg hin ? d.h. wenn ich nun alle elemente innerhalb des body elements aus iframe2 löschen möchte ? ich hab inzwischen schon etliche möglichkeiten ausprobiert, aber leider keinen erfolg gehabt.
ich hatte es zum beispiel so versucht

while(outnode.hasChildNodes)
{
outnode.removeChild(outnode.firstchild);
}

kam direkt ne exception...bei meinen anderen versuchen kam dann unter anderem auch mal "node was not found", etc

was mach ich falsch ?
 
Hi,

hasChildNodes() muss mit den Klammern aufgerufen werden. Weiterhin ist JS case-sesitive,
d.h. es wird zwischen Klein- und Großschreibung unterschieden - firstchild heisst korrekt firstChild.
Code:
while(outnode.hasChildNodes()){
  outnode.removeChild(outnode.firstChild);
}
Ciao
Quaese
 
War leider ein Tippfehler von mir, in meinem Code hab ich es allerdings richtig geschrieben. Funktioniert also nach wie vor nicht
 
Hi,

folgendes Konstrukt funktioniert bei mir - alle Elemente im Body werden entfernt.
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
<!--
function removeAll(){
  var outnode = document.getElementsByTagName("body")[0];

  while(outnode.hasChildNodes()){
    outnode.removeChild(outnode.firstChild);
  }
}
//-->
</script>
</head>
<body>
<button onclick="removeAll();">removeAll()</button>
<h1>Überschrift</h1>
<p>Paragraph</p>
<pre>Ein wenig Code</pre>
</body>
</html>
Wie weiter oben schon erwähnt, gilt es zu beachten, dass es Komplikationen geben kann, wenn es
frameübergreifend eingesetzt wird.

Ciao
Quaese
 

Neue Beiträge

Zurück