Download per JS

Sprint

Erfahrenes Mitglied
Hallo zusammen,

ich stehe hier vor dem Problem, eine Datei herunterladen zu wollen, ohne daß dafür ein Link angeklickt werden muß.
Konkret ist es so, daß über einen Button mittels AJAX ein PHP Script gestartet wird, das eine CSV Datei erstellt. Funktioniert wunderbar. Anschließend an die Erstellung soll die Datei automatisch heruntergeladen werden, und da hängt es momentan. Ich habe ein kleines PHP Script, das die Datei auch korrekt herunterlädt, wenn es vom Browser gestartet wird. Wird es aber per AJAX gestartet, nachdem die Erstellung durchgeführt wurde, wird nur der Inhalt der Datei geladen, nicht aber der Download angestoßen.
Ich hab auch schon zusätzlich eine htaccess Datei angelegt, die einen Download erzwingen soll - auch kein Erfolg.

Wie kann ich rein über JS einen Download erzwingen?
 
Lösung
Meinst du das so
Code:
<script>
function download(){
        let url = "dyncheck.csv";
        let new_filename="test_datei.csv";
        $.ajax({
            url: url,
            dataType: 'binary',
            xhrFields: {
                'responseType': 'blob'
            },
            success: function(data, status, xhr) {
                    var link = document.createElement('a'),
                    filename = new_filename;
                    link.href = URL.createObjectURL(data);
                    link.download = filename;
                    link.click();
            }
        });
}
download()
</script>
Man muß halt nur anklicken wo er es speichern soll, oder meinst du das auch ohne das ?
Es muß den Browser ja gesagt werden...
Moin Basti1012,

so hat das auf Anhieb wunderbar funktioniert. Vielen Dank für die Hilfe.

Der Download bei Safari und Chrome funktioniert auch automatisch, nur FF will eine Bestätigung haben.
 
Das ist gut das es funktioniert.
Ich dachte erst das wir irgendwie einander vorbeireden.

Das jeder Browser seine eigene Regeln hat ist ja nix neues, damit werden Programmierer wohl immer zu kämpfen haben.
 
Zurück