Heim >Web-Frontend >js-Tutorial >Wie kann ich einen Dateidownload mit AJAX auslösen und was sind die besten Methoden?
AJAX-gesteuerter Datei-Download: Ein Leitfaden
Im Bereich der Webentwicklung entsteht die Notwendigkeit, Dateien direkt vom Server herunterzuladen eine AJAX-Anfrage. Um dies zu erreichen, können verschiedene Ansätze genutzt werden.
Ein Standardansatz besteht darin, beim Klicken auf eine Schaltfläche eine AJAX-Anfrage zu initiieren. Hier ist ein Skript, das dies versucht:
var xhr = new XMLHttpRequest(); xhr.open("GET", "download.php"); xhr.send();
Um die Datei zum Herunterladen bereitzustellen, kann ein PHP-Skript wie dieses verwendet werden:
<?php header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename= file.txt"); header("Content-Transfer-Encoding: binary"); readfile("file.txt"); ?>
Diese Methode führt jedoch möglicherweise nicht zum gewünschten Ergebnis Verhalten. Daher ist eine alternative Strategie erforderlich.
Aktualisierte Lösung: Einführung des Download-Attributs
In der HTML5-Landschaft taucht das Download-Attribut auf. Dieses Attribut wird von bekannten Browsern wie Firefox und Chrome (und bald auch IE11) unterstützt und bietet eine optimierte Lösung für das Herunterladen von Dateien.
<a href="file.txt" download="file.txt">Download File</a>
Solange sich die Datei am selben Ursprung wie die Website befindet, ist sie verfügbar kann mit diesem Attribut heruntergeladen werden.
Legacy-Lösung: Verwendung von AJAX und Window Umleiten
Vor der Einführung des Download-Attributs bestand eine Problemumgehung darin, eine AJAX-Anfrage oder eine window.location-Manipulation zu verwenden.
$.ajax({ url: 'download.php', type: 'POST', success: function() { window.location = 'download.php'; } });
Die direkte Verwendung von window.location ist jedoch eine weitere Möglichkeit effiziente Lösung in diesem Zusammenhang.
Das obige ist der detaillierte Inhalt vonWie kann ich einen Dateidownload mit AJAX auslösen und was sind die besten Methoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!