2010-11-18 9 views
0

Ich benutze Ajax, um PHP generierten Inhalt in Main Div in einigen Menü klicken klicken.Reload Seite von Ajax-geladenen Unterseite

Was ich tun möchte, ist eine Art Neuladen Funktionalität - wenn ein Timeout abläuft Ich möchte Benutzer erneut authentifizieren, ich überprüfe dies auf Menü klicken, bevor der Inhalt in div geladen wird.

Wenn ich dies mit PHP Header ("location: Login");

Ich denke, es will innerhalb Laden div umleiten, aber ich möchte die ganze Seite umleiten ...

Antwort

1

Das Beste, was Sie tun können, ist soetwas wie dies

Am Anfang der Datei

ob_start(); 

dies in

if($_SEESION['active']){ 
    ob_end_flush() 
}else{ 
    ob_clean(); 
    echo "{Session_invalid}"; 
    ob_end_flush(); 
} 

Dann Ihre PHP-Datei an das Ende hinzufügen AJAX (XMLHttpRequest)

ajax = new XMLHttpRequest(); 
ajax.open("GET", "/folder/yourFile.php", true); 
ajax.onreadystatechange = function(){ 
    if(readyState == 4){ 
     if(ajax.responseText == "{Session_invalid}"){ 
      document.location = "http://your.authenticate.url/" 
     }else{ 
      mydiv.innerHTML = ajax.responceText 
     } 
    } 
} 
ajax.send(); 

Bitte beachten Sie, ich habe dies auf, was Sie gesagt haben, entfernen Sie Ihre Ajax nur fügen Sie die IFAX

Allso dieser Code wurde gebaut, so dass Sie es in jede Datei hinzufügen können, auch wenn Sie nicht gemacht haben pHP-Datei so sein nur oben und unten Bearbeitungen bitte zunächst sicher, dass in dem Tags obwohl

Das paßt user228395 Punkt 1

1

der Tat hat eine XmlHttpRequest Umleitung nicht viel Sinn machen. Sie haben grundsätzlich ein paar Optionen.

  1. Sie lassen Ihren etwas AJAX-Aufruf Rückkehr, dass Ihr JavaScript, dass Sie zu einem direkten (mit Javascript in diesem Fall umleiten) müssen verstehen macht.

  2. Sie führen einen AJAX-Aufruf aus, bevor Sie versuchen, den Inhalt im Div zu laden, um zu überprüfen, ob der Benutzer authentifiziert werden muss.

  3. Sie behalten eine Variable/einen Cookie, um zu überprüfen, ob die Benutzersitzung abgelaufen ist. Vor jeder Anfrage prüfen Sie, ob dies der Fall ist. Wenn ja, lassen Sie den Benutzer authentifizieren.

Viel Glück!

+0

Hallo, dank beiden, wird es versuchen, noch nicht sicher, welche Lösung. Ich vergaß zu sagen, dass ich jQuery für Ajax verwende, ich denke, ich kann es mit dem Erfolg von jquery post bekommen und es mit der Antwort "{Session_invalid}" abgleichen .... – myha