.append funktioniert nicht in Internet Explorer

deb_ugger

Erfahrenes Mitglied
Hallo!

Ich kämpfe seit mittlerweile Stunden mit folgendem Problem herum: Ich lese mittels jQuery ein XML File aus und möchte es in HTML ausgeben. Dazu verwende ich folgenden Code:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>XML Data Access</title>

<script src="jquery.js" type="text/javascript"></script>
<script>
var xmlfile = "data_priority.xml";

// Access to XML source
$.ajax({
	type: "GET",
	url: xmlfile,
	dataType: ($.browser.msie) ? "text" : "xml",
	success: parseXML
});

// Parse XML
function parseXML(data){
	var xml;
	
	// IE specific settings
	if (typeof data == "string") {
		xml = new ActiveXObject("Microsoft.XMLDOM");
		xml.async = false;
		xml.loadXML(data);
	} else {
		xml = data;
	}
	
	$(xml).find("segment").each(function(){
		var segment = $(this).attr("name");
		$("#output").append("X");
		alert(segment);
	});
}

</script>
</head>

<body>

<div id="output"></div>

</body>
</html>

Funktioniert in allen Browsern, außer IE. Das Problem ist nicht der XML-Zugriff (IE gibt die richtigen Werte über ein Javascript-Alert aus), aber es wird nicht dem "output" Objekt angehängt.

Ich seh den Wald vor lauter Bäumen nicht mehr....
Habs bereits auf 2 PCs mit IE 8 getestet - beide male das gleiche Problem.

Ich hofffe mir kann jemand weiterhelfen!
Danke!!
 
Hi,
ich habs mal mit IE9 und IE8 getestet. Also quasi diesen Quelltest
HTML:
<div id="output"></div>
Javascript:
$("#output").append("X");
getestet. Funktioniert beides. Der Fehler liegt wo anders, als an .append().
hast du mal mit Firebug Breakpoints gesetzt und dir die Werte angeschaut? Kannst du eventuell auch mal dein XML-Aufbau posten?

mfg ra7or
 
Hi, anbei die 3 Files:

index2.html
jquery.js
data_test.xml

(In FF wird 3mal das Alert ausgegeben plus die 3 X im Body, in IE wird nur 3mal das Alert ausgegeben)

Ich hab dann noch diesen minimalen Ansatz getestet:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>XML Data Access</title>

<script src="jquery.js" type="text/javascript"></script>
<script>
$("#output").append("X");
</script>
</head>

<body>

<div id="output"></div>

</body>
</html>

Funktioniert weder in FF, noch IE.
Es gibt bei beiden Varianten keine Fehlermeldung in Firebug.
 

Anhänge

Zuletzt bearbeitet:
Hi,

du greifst auf das Element mit der ID output zu, wenn es noch gar nicht existiert. Ruf deine Funktion erst im onload-Event auf. Dann sollte es funktionieren.
Code:
$(function(){
  // Access to XML source
  $.ajax({
    type: "GET",
    url: xmlfile,
    dataType: ($.browser.msie) ? "text" : "xml",
    success: parseXML
  });
});
Ciao
Quaese
 
Mist da war wer schneller D:,
Hab das gestern abend auch nicht gesehen aber gerade eben ~~. Alternative kannst du das auch so machen:
Javascript:
$(document).ready(function(){
	$.ajax({
		type: "GET",
		url: xmlfile,
		dataType: ($.browser.msie) ? "text" : "xml",
		success: parseXML
	});
});
 
Zurück