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"> </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