Question :
Comment puis-je forcer le téléchargement d'un fichier CSV via un AJAX appeler en PHP ?
Contexte :
Vous avez créé une fonction AJAX qui génère un fichier CSV basé sur la saisie de l'utilisateur. Après la création, vous souhaitez télécharger automatiquement le fichier sans rien demander à l'utilisateur.
Code PHP :
Dans votre fichier PHP (csv.php), vous avez tenté de utilisez le script suivant pour forcer le téléchargement du fichier CSV :
<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>
Problème :
Lorsque vous exécutez ce script à la fin de csv.php, le contenu de les fichiers sont affichés sur la page au lieu d'être téléchargés.
Solution :
AJAX ne peut pas être utilisé pour télécharger directement des fichiers. Pour forcer le téléchargement du fichier, vous pouvez utiliser l'une des méthodes suivantes :
Exemple :
Vous pouvez modifier votre fonction AJAX comme suit pour faire apparaître une nouvelle fenêtre avec le lien de téléchargement :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!