Also habe ich eine kleine Ajax-Anfrage an meine reviewsController@export
gemacht.
Wenn ich jetzt console.log()
der Daten in meiner Erfolgsmethode anzeige, zeigt die Ajax-Antwort die korrekten Daten an. Meine CSV wurde jedoch nicht heruntergeladen. Also habe ich alle richtigen Infos und habe die csv im Wesentlichen erstellt.
Ich denke, das hat möglicherweise damit zu tun, die Header zu setzen?
%Vor%Gibt es irgendetwas, was ich hier falsch mache, oder hat Laravel etwas dafür zu tun?
Probieren Sie diese Version aus - das sollte Ihnen eine schöne Ausgabe mit Response::stream()
ermöglichen.
(Angepasst von dieser SO-Antwort: Benutze Laravel zum Herunterladen Tabelle als CSV )
Verwenden Sie einen normalen Link mit target="_blank"
, anstatt JavaScript / AJAX zu verwenden. Da es sich um eine Dateidownload-Öffnung in einem neuen Tab handelt, sollte die Benutzererfahrung nicht zu klobig sein.
Dies beantwortet Ihre Frage vielleicht nicht direkt, aber ich verwende zu diesem Zweck ein Paket namens thephleague / csv . ..
Um dieses Paket zu verwenden:
Schreiben Sie die folgenden 'use' Anweisungen in Ihren Controller:
%Vor%und alle Modellklassen, die Sie verwenden möchten.
Abstrakte CSV-Erstellung von Code für eine Funktion (in Ihrem Controller), z. B .:
%Vor%Erstellen Sie in Ihrem Controller die Funktion get zum Abrufen / Herunterladen von CSV (ersetzen Sie 'MainMeta' durch Ihre eigene Modellklasse):
%Vor%Wenn Sie eine Route erstellen, um diese Funktion aufzurufen, wird eine CSV-Datei Ihrer ausgewählten Modell-Sammlung / Daten in Ihrem Browser heruntergeladen.
Erstellen Sie eine Route in App \ Http \ routes.php wie folgt:
%Vor%(Optional) Fügen Sie in einer Blade-Ansichtsdatei (z. B. data.blade.php) einen Link oder eine Schaltfläche ein, damit Sie einfach auf die Download-URL / Route zugreifen können:
%Vor%Wenn Sie auf den Link klicken, wird die CSV-Datei in Ihrem Browser heruntergeladen. In einer Anwendung, die ich codiert habe, bleiben Sie auf der Seite, auf die Sie diesen Link klicken.
Dies hängt natürlich von Ihrer eigenen Anwendung ab. Es gibt so viel mehr, was Sie mit diesem Paket tun können (vollständige Dokumentation finden Sie unter Ссылка ). Das Projekt, in dem ich es verwende, ist Ссылка - Ich habe gerade erst angefangen, es nach ein paar Monaten wieder zu programmieren , also noch ein bisschen Refactoring / Testen / Aufräumen machen:).