Heim >Web-Frontend >js-Tutorial >Wie erzwinge ich das Herunterladen einer CSV-Datei über AJAX in PHP?

Wie erzwinge ich das Herunterladen einer CSV-Datei über AJAX in PHP?

Susan Sarandon
Susan SarandonOriginal
2024-10-24 08:37:01313Durchsuche

How to Force-Download a CSV File Through AJAX in PHP?

Dateien mit PHP und AJAX herunterladen

Frage:

Wie kann ich den Download einer CSV-Datei über AJAX erzwingen? Aufruf in PHP?

Hintergrund:

Sie haben eine AJAX-Funktion erstellt, die eine CSV-Datei basierend auf Benutzereingaben generiert. Nach der Erstellung möchten Sie die Datei automatisch herunterladen, ohne den Benutzer dazu aufzufordern.

PHP-Code:

In Ihrer PHP-Datei (csv.php) haben Sie versucht, dies zu tun Verwenden Sie das folgende Skript, um das Herunterladen der CSV-Datei zu erzwingen:

<code class="php">$fileName = 'file.csv';
$downloadFileName = 'newfile.csv';

if (file_exists($fileName)) {
    header('Content-Description: File Transfer');
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename='.$downloadFileName);
    ob_clean();
    flush();
    readfile($fileName);
    exit;
}
echo "done";</code>

Problem:

Wenn Sie dieses Skript am Ende von csv.php ausführen, wird der Inhalt von Die Datei wird auf der Seite angezeigt, anstatt heruntergeladen zu werden.

Lösung:

AJAX kann nicht zum direkten Herunterladen von Dateien verwendet werden. Um das Herunterladen der Datei zu erzwingen, können Sie eine der folgenden Methoden verwenden:

  • Neues Fenster öffnen: Erstellen Sie ein neues Fenster mit dem Download-Link als Adresse.
  • document.location = ...: Verwenden Sie die Eigenschaft document.location = ..., um den aktuellen Speicherort des Dokuments auf den Download-Link festzulegen.

Beispiel:

Sie können Ihre AJAX-Funktion wie folgt ändern, um ein neues Fenster mit dem Download-Link zu öffnen:

<code class="javascript">function csv() {

    ajaxRequest = ajax();

    postdata = "data=" + document.getElementById("id").value;

    ajaxRequest.onreadystatechange = function () {
        var ajaxDisplay = document.getElementById('ajaxDiv');
        if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
            window.open(ajaxRequest.responseText);  // Pop up a new window with the download link
        }
    }

    ajaxRequest.open("POST", "csv.php", false);
    ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    ajaxRequest.send(postdata);
}</code>

Das obige ist der detaillierte Inhalt vonWie erzwinge ich das Herunterladen einer CSV-Datei über AJAX in PHP?. 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