Ajax Script macht nur responseText

So ich hab jetzt durch debuggen der objekte rausgefunden dass ich aus irgendeinem grund nextsibling verwenden muss...
Warum ist mir nicht so ganz klar. Vor alles was er wann verwendet ist mir schleierhaft....
Für Erklärungen und Verbesserungstips bin ich auch dankbar.
Und danke auch bis hierher Sven ;)

Javascript:
function sendRequest(args){
	//var args = {'method':'POST','data':'','URL':'ajax.php','nocache':true,'destination':document.getElementById('x')};
	AJAX(args).request();
}
function ajax_catch(ajax,readyState,status)
{
	//readyState = ajax status
	//status = http status	
	if(readyState==4 && status==200)
	{
		
		//alert(ajax.xhr.responseText);
		//alert(ajax.xhr.responseXML);
		
		insert_person(ajax.xhr.responseXML);
	}
}

var pCount = 0;

function person_remove(id)
{
	var child = document.getElementById(id);
	document.getElementById("persons").removeChild(child);
}

function insert_person(responseXML) 
{	
	var innerHTML = responseXML.getElementsByTagName("innerHTML")[0];
	
	pCount++;
	
	var newChild = document.createElement("div");
	
	var attrId = document.createAttribute("id");
	attrId.nodeValue = "p"+pCount;
	
	var attrClass = document.createAttribute("class");
	attrClass.nodeValue = "person";
	
	newChild.setAttributeNode(attrId);
	newChild.setAttributeNode(attrClass);
	newChild.innerHTML = innerHTML.firstChild.nextSibling.nodeValue;	
	
	document.getElementById('persons').appendChild(newChild);
}

function person_add(type)
{
	var args = {'method':'POST','data':'action=addPerson&type='+type,'URL':'ajax.php','nocache':true,'callback':ajax_catch};
	sendRequest(args);
}
 
Hi,

die Browser interpretieren die Zeilenumbrüche im XML-Dokument unterschiedlich. So wird im FF ein #text-Objekt eingefügt, welches mit firstChild angesprochen wird. Im IE dagegen erreichst du mit firstChild bereits die gesuchte #cdata-section. An diesem Punkt musst du auch das Script anpassen, um alle Browser zufrieden zu stellen.

Beispiel:
Code:
function insert_person(responseXML)
{
    var innerHTML = responseXML.getElementsByTagName("innerHTML")[0];

    pCount++;

    var newChild = document.createElement("div");

    var attrId = document.createAttribute("id");
    attrId.nodeValue = "p"+pCount;

    var attrClass = document.createAttribute("class");
    attrClass.nodeValue = "person";

    newChild.setAttributeNode(attrId);
    newChild.setAttributeNode(attrClass);

    var objHlp = innerHTML.firstChild;
    while(objHlp.nodeName.search("cdata") == -1)
    	objHlp = objHlp.nextSibling;

    newChild.innerHTML = objHlp.nodeValue;

    document.getElementById('persons').appendChild(newChild);
}

Ciao
Quaese
 
Zurück