2012-08-08 8 views
11

Nun, ich habe eine Seite mit Links zu Berichten. Wenn jemand auf einen Bericht klickt, kann er die Excel-Datei herunterladen. Manchmal gibt es jedoch keine Felder, um einen Bericht zu erstellen. In diesem Fall möchte ich eine Warnmeldung anzeigen und nachdem sie auf "Akzeptieren" geklickt haben, werden sie zum Hauptfenster weitergeleitet. Wenn sie auf den Bericht klicken, gehen sie zu einem Controller, der switch verwendet, um die Daten abzurufen. Wenn keine Daten vorhanden sind, gibt das Modell FALSE zurück. so dass am Ende des Controllers, überprüfe ich:Alarmmeldung anzeigen und weiterleiten nach Klick auf "OK"

if ($result_array != FALSE) 
    to_excel($result_array->result_array(), $xls,$campos); 
else { 
    echo "<script>alert('There are no fields to generate a report');</script>"; 
    redirect('admin/ahm/panel'); 
} 

Wenn ich loswerden redirect('admin/ahm/panel'); dann der Alarm funktioniert, aber es bewegt sich den Benutzer auf der Seite, die angeblich die Excel-Datei zu generieren. Aber wenn ich die Weiterleitung verwende, bewegt der Controller den Benutzer zum Hauptfenster, ohne die Warnung anzuzeigen.

Jede Hilfe wird geschätzt.

Vielen Dank im Voraus.

+0

Redirect erster works' zu umleiten, benachrichtigen Sie die Seite umleiten zu dass eine Warnung angezeigt werden muss. – kevin628

Antwort

39
echo "<script> 
alert('There are no fields to generate a report'); 
window.location.href='admin/ahm/panel'; 
</script>"; 

und loswerden redirect Zeile unten.

Sie vermischten zwei verschiedene Welten.

+0

Es gibt ein Problem damit. Es fügt einfach die URL hinzu, zu der ich zur aktuellen URL gehen möchte. Aber es wird nicht umgeleitet. Ich habe sogar versucht, die ganze URL (mit http: //) zu verwenden und es wird immer noch nicht umgeleitet; fügt es einfach zur aktuellen URL hinzu und ich bleibe in einer endlosen Alarmschleife stecken. – fedejp

+0

bearbeitet. geändert '+ =' zu '='. Früher habe ich speziell zur aktuellen URL hinzugefügt, weil ich dachte, du wolltest es. Aber wie auch immer, sollte jetzt funktionieren. – Prasanth

+0

Dies ist nicht sicher, die Deaktivierung von JavaScript würde die weitere Verarbeitung fortsetzen. – Ranhot

1

Die Funktion redirect bereinigt den Ausgabepuffer und führt eine Umleitung von header('Location:...'); durch und beendet die Skriptausführung. Der Teil, den Sie versuchen zu senden, wird niemals ausgegeben.

Sie sollten entweder auf der Download-Seite benachrichtigen oder auf der Seite benachrichtigen, zu der Sie die fehlenden Daten umleiten.

2

Kombination CodeIgniter und JavaScript:

//for using the base_url() function 
$this->load->helper('url'); 

echo "<script type='javascript/text'>"; 
echo "alert('There are no fields to generate a report');" 
echo "window.location.href = '" . base_url() . "admin/ahm/panel';" 
echo "</script>"; 

Hinweis: Die redirect() Funktion automatisch schließt die base_url Pfad, warum ist es nicht, dass es erforderlich war.

0
echo "<script> 
window.location.href='admin/ahm/panel'; 
alert('There are no fields to generate a report'); 
</script>"; 

versuchen, diese Art und Weise funktioniert es ...

Zuerst das Fenster mit der neuen Seite zuweisen, wo das Warnfeld dann die Warnmeldung anzeigen angezeigt werden muß.

0

das funktioniert, aber versuchen Sie es so.

echo " alert ('Es gibt keine Felder einen Bericht erstellen');

window.location.href = 'admin/ahm/Platte';

";

Alarm auf dann Lage neben

4

Verwendung dieses Code der Seite

echo "<script>alert('There are no fields to generate a report');document.location='admin/ahm/panel'</script>"; 
0

diese Weise ist es

if ($result_array) 
    to_excel($result_array->result_array(), $xls,$campos); 
else { 
    echo "<script>alert('There are no fields to generate a report');</script>"; 
    echo "<script>redirect('admin/ahm/panel'); </script>"; 
}` 
Verwandte Themen