Struppi: ajax response buffer

Beitrag lesen

Das ist eine Möglichkeit, auf den Buffer zu verzichten. Ja, die Möglichkeiten sind vielfältig. Mit meinem mittlerweile SELFst erworbenen Verständns für

xhr.onreadystatechange = callback;

genau so meine ich das nicht.

ist es mir nun auch möglich, über einen Puffer, das ist bei mir ein Object, die callback-Funktion von einer Custom-Funktion zu trennen, womit ich eine callbackfunktion bekomme, die ich in meine alib einbinden kann. Verstehe onreadystatechange, hier ist die Response ja schon im Anmarsch.

Nein und nochmals Neimn, er ist schon da.

Ein hierzu fest eingebautes setTimeout("customWriteDoc()", 500) berücksichtigt also die Zeit, die der UA braucht, zum 'vollständigen' Empfang der Response, in meinem Fall zum Schreiben des Buffers.

Das ist überflüssg.

http://rolfrost.de/cgi-bin/alib.cgi Guck mal rein wenn Du magst

Nicht beosnders, ich hatte dir doch mal meinen Entwurf für ein AJAX Objekt geschickt, da wird eher deutlich, wie ich das mit dem callback meinte. Hier machst du nichts anderes, als die Funktion die den Event empängt callback zu nennen. Das ist Murks.

Ich zeig dir mal das Prinzip der Callback Funktion, anahand deines Beispiels (wirklich schön ist das aber nicht)

function wriDoc(response){  
	var hash = readParse(response);  
	document.getElementById('r_name').innerHTML = hash.name;  
	document.getElementById('r_vname').innerHTML = hash.vname;  
	document.getElementById('r_ort').innerHTML = hash.ort;  
	if(aobj.errstr){  
		document.getElementById('ajaxhinweis').innerHTML = aobj.errstr;  
	}  
	document.getElementById('ajaxhinweis').innerHTML = aobj.response;  
}  
  
  
// wrap ajax request  
function tx(){  
	aobj.url = "/cgi-bin/alib.cgi";  
	aobj.params = readForm();  
	aobj.method = 'GET';  
	ajaxRequest(wriDoc); // Hier wird der callback übergeben  
}		  
// Request und Response  
function ajaxRequest(callback){  
	var xhr = mob();  
	if(!callback) callback = funciton() {};  
	  
	function receiver(){  
		if(xhr.readyState == 4){  
			if(xhr.status == 200){ callback(xhr.responseText;) }  
			else{ aobj.errstr = 'Server anwortet nicht'; }  
		}  
	}  
	  
	var url = aobj.url + '?' + aobj.params;  
	xhr.open("GET", url, true);  
	xhr.send(null);  
	xhr.onreadystatechange = receiver;  
	return true;  
}  

Struppi.