mehrere Ajax Requests bringen den selben Inhalt

Da_Chris

Erfahrenes Mitglied
Hallo ich habe eine Seite auf der ich verschiedene Requests mit verschiedenen Anfragen sende.
HTML:
<!-- Im Header: //-->
<script type="javascript">
var request = false;

// Request senden
function setRequest(id,url,query) 
{
	// Request erzeugen
	if (window.XMLHttpRequest) 
	{
		request = new XMLHttpRequest(); // Mozilla, Safari, Opera
	} 
	else if (window.ActiveXObject) 
	{
		try 
		{
			request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
		} 
		catch (e) 
		{
			try 
			{
				request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
			} 
			catch (e) {}
		}
	}

	// überprüfen, ob Request erzeugt wurde
	if (!request) 
	{
		alert("Kann keine XMLHTTP-Instanz erzeugen");
		return false;
	} 
	else 
	{
		// Request öffnen
		request.open('post', url, true);
		// Requestheader senden
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		// Request senden
		request.send(query);
		// Request auswerten
		request.onreadystatechange = function(){interpretRequest(id);};

	}
}

// Request auswerten
function interpretRequest(id) 
{
	switch (request.readyState) 
	{
		// wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
		case 4:
			if (request.status != 200) 
			{
				alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
			} 
			else 
			{
				var content = request.responseText;
				// den Inhalt des Requests in das <div> schreiben
				document.getElementById(id).innerHTML = content;
			}
		break;
		default:
		break;
	}
}

function getComments(vid_id)
{
	setRequest('ajax_comments','ajax.php','comments='+vid_id);
}
function getRating(vid_id)
{
	setRequest('ajax_rating','ajax.php','rating='+vid_id);
}
</script>
....
<!-- Am Ende des Body: //-->
<script type="text/javascript">
<!--
getComments('50');
getRating('50');
//-->
</script>
Die ajax.php gibt unterschiedliche Ausgaben zurück beim direkt Aufruf. In der Seite allerdings bekomme ich zweimal das selbe Ergebnis!
Weis jemand Rat?
 
Hi,

Du musst verschiedene XMLHttpRequest-Objekte für die Requests verwenden. Da die ja gleichzeitig laufen, kommen die sich natürlich in die Quere. Wenn getComments() dem Objekt "request" einen onreadystatechange-Handler zugewiesen hat, kommst Du mit getRatings() daher und initialisierst "request" als neues XMLHttpRequest-Objekt... ;)

LG
 
Ehrlich gesagt werde ich aus deinem Code nicht wirklich schlau...
Vielleicht liegt es an der Datei, die auf dem Server die entsprechende Anfrage verarbeitet....
 
Hi,

Du musst verschiedene XMLHttpRequest-Objekte für die Requests verwenden. Da die ja gleichzeitig laufen, kommen die sich natürlich in die Quere. Wenn getComments() dem Objekt "request" einen onreadystatechange-Handler zugewiesen hat, kommst Du mit getRatings() daher und initialisierst "request" als neues XMLHttpRequest-Objekt... ;)

LG
lässt sich das eleganter lösen oder ist es nur mit zwei verschiedenen Funktionen möglich?
 
Hi,

lagere das Erstellen des Requestobjektes in eine Funktion aus, die das erstellte Objekt zurückgibt. Die rufst Du in getComments() und getRatings() auf und übergibst das Ergebnis an setRequest().

LG
 
so funktioniert es vielen dank!
HTML:
function createRequest()
{
	var request = false;
	// Request erzeugen
	if (window.XMLHttpRequest) 
	{
		request = new XMLHttpRequest(); // Mozilla, Safari, Opera
	} 
	else if (window.ActiveXObject) 
	{
		try 
		{
			request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
		} 
		catch (e) 
		{
			try 
			{
				request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
			} 
			catch (e) {}
		}
	}
	return request;
}


// Request senden
function setRequest(request,id,url,query) 
{


	// überprüfen, ob Request erzeugt wurde
	if (!request) 
	{
		alert("Kann keine XMLHTTP-Instanz erzeugen");
		return false;
	} 
	else 
	{
		// Request öffnen
		request.open('post', url, true);
		// Requestheader senden
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		// Request senden
		request.send(query);
		// Request auswerten
		request.onreadystatechange = function(){interpretRequest(request,id);};

	}
}

// Request auswerten
function interpretRequest(request,id) 
{
	switch (request.readyState) 
	{
		// wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
		case 4:
			if (request.status != 200) 
			{
				alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
			} 
			else 
			{
				var content = request.responseText;
				// den Inhalt des Requests in das <div> schreiben
				document.getElementById(id).innerHTML = content;
			}
		break;
		default:
		break;
	}
}

function getComments(vid_id)
{
	commentRequest = createRequest()
	setRequest(commentRequest,'ajax_comments','ajax.php','comments='+vid_id);
}
function getRating(vid_id)
{
	ratingRequest = createRequest()
	setRequest(ratingRequest,'ajax_rating','ajax.php','rating='+vid_id);
}
 

Neue Beiträge

Zurück