Heim >Web-Frontend >js-Tutorial >Wie kann ich Dateidownloads mit Ajax-Anfragen auslösen?

Wie kann ich Dateidownloads mit Ajax-Anfragen auslösen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-19 14:56:09896Durchsuche

How Can I Trigger File Downloads with Ajax Requests?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn