Michael: Skriptende bei Content-Disposition

Hallo.

In einer Webanwendung möchte ich den Download von Daten aus einer SQL-Tabelle als Excel-Datei möglichst komfortabel gestalten. Dazu habe ich mir ein PHP-Skript geschrieben, das die jeweiligen Daten abfrägt, eine entsprechende (pseudo)Excel-Datei als String generiert und diesen dann zurückgibt (echo). Vor der Rückgabe setze ich entsprechende Header, dass die Rückgabe gleich als Datei-Download geliefert wird.
In der Webanwendung kann man auswählen, was (welche Daten) man herunterladen will. Nach der Auswahl wird mit JS ein Iframe generiert und die Adresse der PHP-Datei als src gesetzt - damit startet dann der Download-Dialog, wenn das PHP-Skript fertig ist und die Daten zurückliefert. Auf die Art und Weise brauche ich kein Popup oder Download-Link und muss auch die erzeugte Datei nicht am Server zwischenspeichern.
Soweit klapp das alles wunderbar, nur habe ich jetzt keine richtig zündende Idee, wie ich feststellen kann, wann der Download abgeschlossen ist (bzw. das Skript die Daten geliefert hat), um dann den Iframe anschließend wieder zu entfernen. Ein Timeout wäre ja nicht gerade eine schöne Lösung.
Kann ich vom Frontend aus irgendwie feststellen, wann das Skript fertig ist?

Danke für Eure Hilfe
Michael

  1. hi,

    In der Webanwendung kann man auswählen, was (welche Daten) man herunterladen will. Nach der Auswahl wird mit JS ein Iframe generiert und die Adresse der PHP-Datei als src gesetzt - damit startet dann der Download-Dialog, wenn das PHP-Skript fertig ist und die Daten zurückliefert. Auf die Art und Weise brauche ich kein Popup oder Download-Link und muss auch die erzeugte Datei nicht am Server zwischenspeichern.
    Soweit klapp das alles wunderbar, nur habe ich jetzt keine richtig zündende Idee, wie ich feststellen kann, wann der Download abgeschlossen ist (bzw. das Skript die Daten geliefert hat), um dann den Iframe anschließend wieder zu entfernen.

    Verzichte auf den Iframe, und rufe die Ressource über einfache Zuweisung der Adresse an window.loaction.href auf.
    Wenn die gelieferte Ressource nicht zum Anzeigen, sondern nur zum Abspeichern taugt, belässt der Browser den Fensterinhalt bestehen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo,

      Verzichte auf den Iframe, und rufe die Ressource über einfache Zuweisung der Adresse an window.loaction.href auf.
      Wenn die gelieferte Ressource nicht zum Anzeigen, sondern nur zum Abspeichern taugt, belässt der Browser den Fensterinhalt bestehen.

      Super, hätte ich nie daran gedacht!

      Grüße

      Michael