Axel Richter: Ajax: importNode von XHTML-Dokument zu XHTML-Dokument

Beitrag lesen

Hallo,

im dem Zusammenhang habe ich mal probiert, ob das Einhängen(Importieren) von Nodes per Ajax von einem application/xhtml+xml Dokument in ein Document mit dem selben Content-Type funktioniert. Bisher ist mir auch das nicht geglückt. Das Folgende kann natürlich nicht mit dem IE ausgetestet werden:

  
<?xml version="1.0" encoding="utf-8"?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<title>Beschreibung der Seite</title>  
<script type="text/javascript">  
/* <![CDATA[ */  
function newXMLHttpRequest() {  
 var xmlreq = false;  
 if (window.XMLHttpRequest) {  
  xmlreq = new XMLHttpRequest();  
 }  
 return xmlreq;  
}  
  
function BehandlungBeiFertigStatusAenderung() {  
 alert(httpRequest.readyState);  
 if (httpRequest.readyState == 4) {  
  alert(httpRequest.status);  
  if (httpRequest.status == 200) {  
   alert(httpRequest.getAllResponseHeaders());  
   alert(httpRequest.responseText);  
  
   var myXMLSelect = httpRequest.responseXML.getElementsByTagName("select").item(0);  
   document.getElementById("insert_tag").replaceChild(document.importNode(myXMLSelect, true), document.getElementById("insert_tag").firstChild);  
  
  } else {  
     alert("ERROR: "+ httpRequest.status);  
    }  
 }  
}  
  
function doAjaxRequestAsynchron() {  
 httpRequest = newXMLHttpRequest();  
 try {  
  httpRequest.open("GET", "test.xhtml", true);  
  httpRequest.onreadystatechange = BehandlungBeiFertigStatusAenderung;  
  httpRequest.send(null);  
 } catch (ex) {  
   if (ex.description) alert(ex.description); else alert(ex);  
 }  
}  
/* ]]> */  
</script>  
</head>  
<body>  
<p><button onclick="doAjaxRequestAsynchron();">doAjaxRequestAsynchron()</button></p>  
<div id="insert_tag">&nbsp;</div>  
</body>  
</html>  

wird als application/xhtml+xml ausgeliefert. Die test.xhtml enthält:

  
<?xml version="1.0" encoding="utf-8"?>  
  
<select name="list_name" size="1">  
  <option value="value1">Text1</option>  
  <option value="value2">Text2</option>  
  <option value="value3">Text3</option>  
  <option value="value4">Text4</option>  
</select>  

und wird auch als application/xhtml+xml ausgeliefert. Trotzdem funktioniert das

document.getElementById("insert_tag").replaceChild(document.importNode(myXMLSelect, true), document.getElementById("insert_tag").firstChild);

nicht wie erwartet. Die Elemente werden zwar eingehängt, aber nicht als Elemente geparsed.

Habe ich was falsch gemacht? Oder ist responseXML eben immer XML, egal, welchen Content-Type der Server liefert?

viele Grüße

Axel