// 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 = '0'; } 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 = "
" + fehler + "
"; // 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; }