// AJAX Request Funktion getContent()
// URL : Datei
// TYPE : POST oder GET
// QUERY : Querystring für URL
// DESTINATION: Ziel-ID für getElementById
// FUNKTION : Funktion an welche DESTINATION und ANFRAGE-Ergebnis übergeben werden soll
// CNTTYPE : Contenttype (xml|...)
function getAjaxContent(url, type, query, destination, funktion, cnttype) {
ajaxContent(url, type, query, destination, funktion, cnttype);
}
//
function ajaxContent(url, type, query, destination, funktion, cnttype) {
// default vars setzen
// Fehler
if (typeof (ajaxDestDiv) == 'undefined') {
// Was anzeigen wenn Ziel DIV nicht erreichbar
ajaxDestDiv = 'DIV "' + destination + '" nicht verfügbar!';
}
if (typeof (ajaxPreinfo) == 'undefined') {
// Was anzeigen bevor Request gestartet wird, default ist Loader-GIF
ajaxPreinfo = '
';
}
if (typeof (ajaxSupport) == 'undefined') {
// Was anzeigen wenn kein Ajax genutzt werden kann
ajaxSupport = 'Kein AJAX Support!';
}
if (typeof (ajaxInstanz) == 'undefined') {
// Was Anzeigen wenn keine Ajax Instanz erzeugt werden konnte
ajaxInstanz = 'Kann keine XMLHTTP-Instanz erzeugen!';
}
if (typeof (ajaxUrl) == 'undefined') {
// Was Anzeigen wenn Url nicht abgerufen werden konnte
ajaxUrl = 'Kann URL nicht abfragen!';
}
if (typeof (ajaxTimeout) == 'undefined') {
// Was Anzeigen wenn Anfrage zu lange dauert
ajaxTimeout = 'Keine Antwort vom Server!';
}
if (typeof (ajaxFunktion) == 'undefined') {
// Was anzeigen wenn ein Fehler beim Funktionsaufruf vorliegt
ajaxFunktion = 'Fehler im Funktionsaufruf!';
}
if (typeof (ajaxXML) == 'undefined') {
// Was anzeigen wenn ein XML Fehler vorliegt
ajaxXML = 'Fehler beim laden des XML!';
}
if (typeof (ajaxTXT) == 'undefined') {
// Was anzeigen wenn die Rückgabe leer ist
ajaxTXT = 'Fehler beim laden des Content!';
}
// Funktion-Steuerung
if (typeof (ajaxErrorHandle) == 'undefined') {
// Error Handling aktivieren
ajaxErrorHandle = true;
}
if (typeof (ajaxMaxTimeout) == 'undefined') {
// Wie lange soll Anfrag max. dauern
ajaxMaxTimeout = 2000;
}
// Funktionsaufruf
var ajaxCall = 'Fehler im Funktionsaufruf!<\/strong>';
// Funktionsaufruf checken
var ajaxParams = new Array('url', 'type', 'query', 'destination', 'funktion', 'cnttype');
var ajaxFehler = false;
for ( var i = 0; i < ajaxParams.length; i++) {
if (typeof (eval(ajaxParams[i])) == 'undefined') {
ajaxFehler = true;
}
}
if (ajaxFehler === true) {
return onAjaxError(ajaxFunktion, ajaxErrorHandle);
}
// Prüfen ob auf destination zugegriffen werden kann
try {
// Loader Animation im DIV anzeigen
document.getElementById(destination).innerHTML = ajaxPreinfo;
}
catch (e) {
return onAjaxError(ajaxDestDiv, ajaxErrorHandle);
}
// Browser Check
var http_request = false;
// Mozilla, Safari, native XMLHttpRequest
if (window.XMLHttpRequest && !(window.ActiveXObject)) {
try {
// IE 7 versteht dies auch, ActiveX wird aber vorgezogen
http_request = new XMLHttpRequest();
} catch (e) {
return onAjaxError(ajaxSupport, ajaxErrorHandle);
}
} else if (window.ActiveXObject) {
// IE/Windows ActiveX version
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP.3.0");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
return onAjaxError(ajaxSupport, ajaxErrorHandle);
}
}
}
// Eine Object Instanz
if (http_request) {
// Zeitstempel
requestTime = new Date();
requestUrl = url + '?' + requestTime.getTime();
// Timeout Timer setzen
var requestTimer = setTimeout( function() {
// Request abbrechen
http_request.abort();
return onAjaxError(ajaxTimeout, ajaxErrorHandle);
}, ajaxMaxTimeout);
//
try {
http_request.open(type, requestUrl, true);
// Header setzen
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
http_request.onreadystatechange = function() {
// Status prüfen
if ((http_request.readyState == 4) && (http_request.status == 200)) {
// Erfolgreicher Request
// Timeout Timer löschen
clearTimeout(requestTimer);
// Rückgabe holen
if (cnttype == 'xml') {
// XML Object
var response = http_request.responseXML;
if ( response == null ) {
return onAjaxError(ajaxXML, ajaxErrorHandle);
}
} else {
// TXT Object
var response = http_request.responseText;
if ( response.length == 0 ) {
return onAjaxError(ajaxTXT, ajaxErrorHandle);
}
}
// Funktion übergeben?
if ( funktion.length > 0 ) {
// Funktion umschreiben
try {
eval(funktion.replace(/\(\)/,"\(destination, response\)"));
} catch (e) {
return onAjaxError(ajaxFunktion, ajaxErrorHandle);
}
}
else {
// Standard Ausgabe in destination
document.getElementById(destination).innerHTML = response;
}
}
}
http_request.send(query);
} catch (e) {
// Fehler beim öffnen der URL
clearTimeout(requestTimer);
return onAjaxError(ajaxUrl, ajaxErrorHandle);
}
clearTimeout(requestTimer);
} else {
// Keine Object Instanz
return onAjaxError(ajaxInstanz, ajaxErrorHandle);
}
}
function onAjaxError(fehler, errorStatus) {
// Wenn Errorausgabe erwünscht ist
if (errorStatus === true) {
var windowWidth, windowHeight;
var width = 300;
var height = 50;
//
if (self.innerHeight) {
windowWidth = self.innerWidth;
windowHeight = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientHeight) {
windowWidth = document.documentElement.clientWidth;
windowHeight = document.documentElement.clientHeight;
} else if (document.body) {
windowWidth = document.body.clientWidth;
windowHeight = document.body.clientHeight;
}
arrayPageSize = new Array(((windowHeight - height) / 2), ((windowWidth - width) / 2), width, height);
// Fehlerausgabe
var fehlerHTML = "";
// DIV Object erzeugen und an BODY anhängen
var objOverlay = document.createElement("div");
objOverlay.setAttribute('id', 'ajaxfehleroverlay');
objOverlay.style.position = 'absolute';
objOverlay.style.zIndex = 999;
objOverlay.style.top = (arrayPageSize[0] + 'px');
objOverlay.style.left = (arrayPageSize[1] + 'px');
objOverlay.style.width = (arrayPageSize[2] + 'px');
objOverlay.style.height = (arrayPageSize[3] + 'px');
objOverlay.style.padding = '10px';
objOverlay.innerHTML = fehlerHTML;
document.body.appendChild(objOverlay);
}
return false;
}