Mehrere Ajax Aufrufe in einer Funktion

DiDiJo

Erfahrenes Mitglied
Hey Leute ... ich hab nen Problem mit meiner SEO-Seite.

Mein Problem ist, dass nach der Filterung meiner Datensätze der Sortierblock nicht mehr mit dem richtigen content gefüllt ist (der Main Content wird per AJAX ausgetauscht und der Sortierblock oben drüber bleibt unberührt).

Nun hab ich mir gedacht ich könnte die Sortierung auch einfach per AJAX so abändern, dass die Sortierung wieder funktioniert. Ich hab mir also folgende Funktionen erstellt:

Code:
var ajax_element = '';

function changeContent(elem,parameter)
{
	ajax_element = elem;
	ajaxSuccess = outputContent;
	makeGETRequest('/modules/ajax_content_changer.php', '?showContent=1&'+parameter);
	
	changeSortierung(parameter);
}

function outputContent(text) {
	if (ajax_element != '')	el = document.getElementById(ajax_element);	
	el.innerHTML = text;
}

function changeSortierung(parameter) {
	ajaxSuccess = refreshSortierung;
	makeGETRequest('/modules/ajax_content_changer.php', '?refreshSearch=1&'+parameter);		
}

function refreshSortierung(text) {
	el = document.getElementById('sortList');	
	el.innerHTML = text;
}

Meine Content-Changer.php sieht so aus .... :
PHP:
if ($_REQUEST['filter'] && $_REQUEST['showContent']) {
	if (isset($_REQUEST['adsID']) && isset($_REQUEST['changeKid'])) {
		changeKategorie($_REQUEST['adsID'],$_REQUEST['changeKid']);
	}
	
	$output = getKategorie($_REQUEST['kid'], $_REQUEST['filter'], $_REQUEST['sort']);
}



if ($_REQUEST['refreshSearch']) {
	$output = '<li>Sortieren nach:</li>
               <li><a href="javascript:changeContent(\'main\',\'filter='.$_REQUEST['filter'].'&amp;kid='.$_REQUEST['kid'].'&amp;sort=eintrag_am&amp;sortBy='.getSortBy().'\');">Datum</a></li>
               <li><a href="javascript:;">PR</a></li>
               <li><a href="javascript:changeContent(\'main\',\'filter='.$_REQUEST['filter'].'&amp;kid='.$_REQUEST['kid'].'&amp;sort=posakt&amp;sortBy='.getSortBy().'\');">Platz</a></li>
               <li><a href="javascript:changeContent(\'main\',\'filter='.$_REQUEST['filter'].'&amp;kid='.$_REQUEST['kid'].'&amp;sort=link&amp;sortBy='.getSortBy().'\');">A - Z</a></li>
               <li class="clear"></li>';
}

echo $output;

und das ist meine AJAX-Main:
Code:
// JavaScript Document
var http_request = false;

// Wir starten eine Postanfrage, die parameter wurden getMäßig zusammengesetzt

function makePOSTRequest(url, parameters) {
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
	 http_request = new XMLHttpRequest();
	 if (http_request.overrideMimeType) {
		// set type accordingly to anticipated content type
		//http_request.overrideMimeType('text/xml');
		http_request.overrideMimeType('text/html');
	 }
  } else if (window.ActiveXObject) { // IE
	 try {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
		try {
		   http_request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
	 }
  }
  if (!http_request) {
	 alert('Cannot create XMLHTTP instance');
	 return false;
  }
  
  http_request.onreadystatechange = alertContents;	//Funktion siehe unterhalv
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);
}

//Hier läuft eine GET-Anfrage

function makeGETRequest(url, parameters) {
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
	 http_request = new XMLHttpRequest();
	 if (http_request.overrideMimeType) {
		// set type accordingly to anticipated content type
		//http_request.overrideMimeType('text/xml');
		http_request.overrideMimeType('text/html');
	 }
  } else if (window.ActiveXObject) { // IE
	 try {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
		try {
		   http_request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
	 }
  }
  if (!http_request) {
	 alert('Cannot create XMLHTTP instance');
	 return false;
  }
  http_request.onreadystatechange = alertContents;
  http_request.open('GET', url + parameters, true);
  http_request.send(null);
}

function alertContents() {
  if (http_request.readyState == 4) {
	 if (http_request.status == 200) {
		ajaxSuccess(http_request.responseText);
	 } else {
		ajaxError('Es gab ein Problem bei Ihrer Anfrage! Bitte versuchen Sie es erneut.');
	 }
  }
}

Mein problem scheint wohl zu sein, dass mein "Ajax-Sender" überschrieben wird. Ich staret einen neuen Request bevor der alte komplett abgeschlossen ist. Es wird also nur der letzte AJAX Request ausgeführt (in der changeSortierung() Funktion).


Wie müsste ich meine AJAX Main Funktion umschreiben, damit ich mehrere AJAX-Requests mit Zielfunktionen verwalten kann.
 
ich will ganz ehrlich sein ... ich versteh es net wirklich ....

das is auch mehr oder weniger das erste meiner Projekte mit AJAX. Diese Ajax main hab ich von einem Kollegen übernommen. ich weiß gerade mal wie ich das ding benutze.

naja mal schauen was ich mit diesem Tutorial anfangen kann. Ich würde ja am liebsten meine anderen Funktionen (mit denen ich schon meinen content ändere) beibehalten.
 

Neue Beiträge

Zurück