Heim > Web-Frontend > js-Tutorial > Wie erzwinge ich das Herunterladen einer CSV-Datei nach der Erstellung mit PHP und AJAX?

Wie erzwinge ich das Herunterladen einer CSV-Datei nach der Erstellung mit PHP und AJAX?

Susan Sarandon
Freigeben: 2024-10-24 08:35:02
Original
840 Leute haben es durchsucht

How to Force Download a CSV File After Creation with PHP and AJAX?

So laden Sie eine Datei über AJAX in PHP herunter

Bei der Arbeit mit Webanwendungen ist es oft notwendig, Dateien vom Server herunterzuladen. AJAX (Asynchronous JavaScript and XML) bietet eine Möglichkeit, solche Downloads zu initiieren, ohne die Seite neu laden zu müssen.

Eine Methode besteht darin, eine Schaltfläche zu erstellen, die eine AJAX-Funktion auslöst. Das folgende Code-Snippet demonstriert diesen Ansatz:

<code class="php">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){
      ajaxDisplay.innerHTML = $ajaxRequest.responseText;           
    }
  }

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

Hier stellt sich jedoch die Frage, wie man den Download einer erstellten CSV-Datei erzwingen kann, nachdem sie von PHP erstellt wurde. Das bereitgestellte Skript in der PHP-Datei lautet wie folgt:

<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>
Nach dem Login kopieren

Das Problem besteht darin, dass die Ausführung dieses Skripts keinen Download initiiert, sondern stattdessen den Inhalt der CSV-Datei auf der Seite (im AjaxDiv) anzeigt. .

Die Antwort auf dieses Problem ist, dass AJAX nicht für das Herunterladen von Dateien gedacht ist. Stattdessen besteht die beste Vorgehensweise darin, ein neues Fenster zu öffnen und als Adresse den Download-Link festzulegen. Alternativ können Sie die Seite mit document.location = .....

direkt zum Download-Link umleiten

Das obige ist der detaillierte Inhalt vonWie erzwinge ich das Herunterladen einer CSV-Datei nach der Erstellung mit PHP und AJAX?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage