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:
Meine Content-Changer.php sieht so aus .... :
und das ist meine AJAX-Main:
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.
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'].'&kid='.$_REQUEST['kid'].'&sort=eintrag_am&sortBy='.getSortBy().'\');">Datum</a></li>
<li><a href="javascript:;">PR</a></li>
<li><a href="javascript:changeContent(\'main\',\'filter='.$_REQUEST['filter'].'&kid='.$_REQUEST['kid'].'&sort=posakt&sortBy='.getSortBy().'\');">Platz</a></li>
<li><a href="javascript:changeContent(\'main\',\'filter='.$_REQUEST['filter'].'&kid='.$_REQUEST['kid'].'&sort=link&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.