hotti: Redirect aus Ajax heraus

Beitrag lesen

Wie sieht Deine Umleitung denn aus - verwendest Du location.href?

Ausnahmsweise hau ich hier mal den ganzen Code rein, ist ja nicht viel. Hab nochmal genau hingeschaut, auch im Quellcode ist nach der Umleitung die Startseite vollständig zu lesen. Irgendwas bleibt da im Browser "hängen"... und ist nach dem Reload wech!!!

Wer testen möchte, die iniDatei wird hier nur gebraucht für die Credentials zur MySQL-Anbindung (user, pass, host, port).

Danke schonmal,
wenn das geht, *.*
Hotti

===================== alles, sorry ========================================

#!/usr/bin/perl
###########################################################################

Falls MySQL nicht zur Verfügung steht

und mod rewrite noch eingeschaltet ist

greift dieses Script

Pfad und Name der iniDatei

my $inifile = '/home/netsh100633/html/cgi-bin/basic.ini';

###########################################################################
use strict;
use DBI;
use CGI 'param';
use Config::IniFiles;
use URI::Escape;

my $cfg = getvars($inifile);

if(param('dbase')){
# Versuche die Datenbankanbindung
if(my $dbh = dbase()){
# print "Content-type: text/html\n\n";
# print uri_escape(qq(Der Server ist wieder erreichbar, bitte klicken Sie <a href="/" title="Zur Startseite">hier für einen erneuten Versuch</a>.));
redirect("/");
}
else{
print "Content-type: text/html\n\n";
print "Der Datenbankserver ist zur Zeit nicht erreichbar.";
}
exit;
}
else{
print "Content-type: text/html\n\n";
print qq(
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML lang="de">
<HEAD>
<LINK REL="stylesheet" HREF="/nv.css" TYPE="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<META NAME="Author" CONTENT="Rolf Rost">
<meta name="description" content="Vorübergehend keine Datenbankanbindung">

		<TITLE>Keine Datenbankanbindung</TITLE>  

		<script type="text/javascript">  
			// Erstelle ein Objekt für Ajax-Requests  
			var maob = mob();  
			function mob(){  
				var mob = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");  
				return mob;  
			}  
		</script>  



		</HEAD>  
		<BODY onload="mob()">  

	<h1>Keine Datenbankanbindung</h1>  

	<p>Vorübergehend stehen alle Dienste der Domäne rolfrost.de mit Datenbankanbindung nicht zur Verfügung. Bitte versuchen Sie es später erneut, das Problem wurde bereits erkannt, an der Lösung wird zeitnah gearbeitet.</p>  
	  
	<p>Sofern JavaScript im Browser aktiviert ist, sehen Sie den Status der Datenbankanbindung untenstehend, lassen Sie dazu einfach das Fenster geöffnet.</p>  

	<div id="dbstatus"> </div>  
	  
	<script type="text/javascript">  


	function request(){  
		var url = '/cgi-bin/fallback.cgi?dbase=1';  
		maob.open("GET", url, true);  
		maob.send(null);  
		maob.onreadystatechange = response;		}  

	function response(){  
		if(maob.readyState == 4){  
			if(maob.status == 200){  
				document.getElementById('dbstatus').innerHTML = unescape(maob.responseText);  
			}  
			else{  
				document.getElementById('dbstatus').innerHTML = "Der Status der DB konnte nicht ermittelt werden.";  
			}  
		}  
	}  

	window.setInterval("request()", 5000);  

	</script>  
	  
	  
	  

	</body>  
	</html>  
);  

}

exit;
###########################################################################
###########################################################################

einfache Umleitung

sub redirect{
my $url = shift;
print "Status: 302 Moved\n";
print "location: $url\n\n";
return;
}
###########################################################################

Versuche eine Verbindung zur Datenbank

sub dbase{
my $dsn = "DBI:mysql:database=$$cfg{mysql}{base};host=$$cfg{mysql}{host};port=$$cfg{mysql}{port}";
my $dbh = DBI->connect($dsn, $$cfg{mysql}{user}, $$cfg{mysql}{pass}) || return;
return $dbh;
}
###########################################################################

die basic.ini einlesen

sub getvars{
my $inifile = shift;
# hash mit Variablen binden
my %vars;
tie %vars, 'Config::IniFiles', ( -file => $inifile );
return %vars;
}
###########################################################################
__END__