Télécharger un fichier avec une requête AJAX
Lorsque vous tentez de lancer une « demande de téléchargement ajax » en cliquant sur un bouton, il est courant d'implémenter du code comme le ci-dessous :
var xhr = new XMLHttpRequest(); xhr.open("GET", "download.php"); xhr.send();
Avec le PHP suivant script :
<? header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename= file.txt"); header("Content-Transfer-Encoding: binary"); readfile("file.txt"); ?>
Cependant, cette approche peut ne pas donner le résultat souhaité. Pour lancer efficacement un téléchargement, envisagez de mettre en œuvre l'une des alternatives suivantes :
Option 1 : utiliser l'attribut "download"
Dans les navigateurs modernes comme Firefox et Chrome, le L'attribut 'download' offre un moyen pratique de lancer des téléchargements à partir d'une page Web sans nécessiter d'interaction côté serveur. Voici un exemple :
<a href="file.txt" download="file.txt">Download</a>
Option 2 : accédez au script de téléchargement à l'aide d'AJAX ou de Window.location
Si l'attribut « téléchargement » n'est pas approprié option, vous pouvez utiliser AJAX ou window.location pour accéder au script de téléchargement. En utilisant AJAX, vous pouvez effectuer une requête asynchrone, puis utiliser sa fonction de rappel de réussite pour rediriger vers le script de téléchargement :
$.ajax({ url: 'download.php', type: 'POST', success: function() { window.location = 'download.php'; } });
Vous pouvez également simplement utiliser window.location pour accéder au script de téléchargement :
window.location = 'download.php';
Bien que l'approche AJAX offre une certaine flexibilité, l'utilisation de window.location est généralement plus efficace et plus simple.
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!