Claudia: Datei per Ajax an Browser senden

Hallo !

ich habe einen Ajax Request, der eine XLS Datei generieren lässt. Kann ich diese Datei jetzt auch irgendwie an den Browser senden ? Kann man per Ajax auch einen Header erzeugen oder geht alles nur im Klartext zurück ?

Danke und Gruss

  1. Hi,

    ich habe einen Ajax Request, der eine XLS Datei generieren lässt. Kann ich diese Datei jetzt auch irgendwie an den Browser senden ?

    sicher, PHP hält hierzu mächtige Werkzeuge wie "print" und "echo" bereit. Allerdings wird der Browser wenig damit anfangen können, weil die Daten stante pede an eine Programmlogik weiter gereicht werden, die beispielsweise nicht in der Lage ist, sie an eine Fremdapplikation weiter zu reichen.

    Kann man per Ajax auch einen Header erzeugen oder geht alles nur im Klartext zurück ?

    AJAX ändert nichts an den Mechanismen von HTTP. Vor allem kannst Du auf PHP-Seite nichts davon mitkriegen, ob AJAX im Spiel ist oder nicht.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Moin!

      AJAX ändert nichts an den Mechanismen von HTTP. Vor allem kannst Du auf PHP-Seite nichts davon mitkriegen, ob AJAX im Spiel ist oder nicht.

      Das ist so nicht ganz richtig. :) Jedenfalls für geeignete Bedeutungen von "kannst".

      Man KANN javascript-seitig dem Server den Hinweis geben, dass der ausgeführte HTTP-Request von Ajax kommt. Etliche Javascript-Frameworks, beispielsweise jQuery, Mootools, Prototype, Dojo oder YUI, fügen dazu den HTTP-Header "X-REQUESTED-WITH" mit dem Wert "XMLHttpRequest" hinzu. Auf diese Angabe kann man serverseitig natürlich reagieren.

      Andererseits kann man Ajax auch so ausführen, dass sich der Request serverseitig eben gar nicht von einem normalen Request unterscheidet.

      Es kann also sein, dass man davon nichts mitkriegt. Muss aber nicht. Die Wahrscheinlichkeit, dass man was mitkriegen KANN, ist angesichts der Verbreitung der Frameworks relativ hoch.

      - Sven Rautenberg

  2. Hallo Claudia,

    Im Prinzip geht das so, dass du als mime type application/octet-stream sendest, unter Umstaenden in einem iframe. Schau mal im PHP-Manual unter header(), in den Userkommentaren gibt es einige Beispiele.

    Gruss

    Dieter