Dateien mit Ajax-Anfragen herunterladen
Die Implementierung einer Funktion zum Herunterladen von Dateien beim Klicken auf eine Schaltfläche mit Ajax kann zu Herausforderungen führen. Lassen Sie uns eine Lösung finden, um diese Hindernisse zu überwinden.
Erster Versuch
Ein erster Versuch, dies zu erreichen, besteht darin, eine XMLHttpRequest zu erstellen und eine GET-Anfrage an ein PHP-Skript zu senden gezeigt unten:
javascript: var xhr = new XMLHttpRequest(); xhr.open("GET", "download.php"); xhr.send(); download.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"); ?>
Einschränkungen
Diese Methode greift jedoch aufgrund von Browsereinschränkungen zu kurz. Ajax-Anfragen können die Download-Eingabeaufforderung nicht direkt auslösen; Stattdessen muss man zu der Datei navigieren, damit es auftritt.
Lösung
Es stehen zwei Ansätze zur Verfügung:
1. Verwendung von window.location und Fallback
Verwenden Sie die Eigenschaft window.location, um zum Download-Skript zu navigieren und den Download auszulösen:
$.ajax({ url: 'download.php', type: 'POST', success: function() { window.location = 'download.php'; } });
2. HTML5-Download-Attribut
Für moderne Browser kann das HTML5-Download-Attribut verwendet werden:
<a href="download.php" download> Download File </a>
Hinweis:
- Das Download-Attribut wird nur in Chrome, Firefox und späteren Internetversionen unterstützt Explorer.
- Stellen Sie sicher, dass die herunterzuladende Datei vom gleichen Ursprung ist wie die Hostseite.
Das obige ist der detaillierte Inhalt vonWie kann ich Dateidownloads mit Ajax-Anfragen auslösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!