Ecriture de fichier sur poste client 'avec' ajax + PHP
Posté : 24 sept. 2014, 12:36
Bonjour,
J'utilise un code PHP très simple pour demander (grace aux 'headers') à l'utilisateur un nom de fichier local dans lequel seront enregistrées des informations.
Ca fonctionne, voici le code: (test_export_direct.php)
Maintenant, je veux faire la même chose en Ajax:
J'ai un écran principal, avec un bouton export et du code javascript pour appeler une page php qui 'devrait ecrire' dans le fichier choisi, mais qui ne fait rien du tout:
La page principale (code js + bouton): (test_export_ajax.php)
Merci pour votre aide
J'utilise un code PHP très simple pour demander (grace aux 'headers') à l'utilisateur un nom de fichier local dans lequel seront enregistrées des informations.
Ca fonctionne, voici le code: (test_export_direct.php)
<?php
header('Content-type: text/plain');
header('Content-Disposition: attachment; filename="export_direct.txt"');
echo "Ligne 1 \n";
echo "Ligne 2 \n";
?>
Ca demande le nom du fichier (avec la valeur par defaut que j'ai fournie) et ça enregistre les 2 lignes dedans, sur le poste local.Maintenant, je veux faire la même chose en Ajax:
J'ai un écran principal, avec un bouton export et du code javascript pour appeler une page php qui 'devrait ecrire' dans le fichier choisi, mais qui ne fait rien du tout:
La page principale (code js + bouton): (test_export_ajax.php)
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
<script type="text/javascript">
// Instancie un objet XMLHttpRequest et le renvoie
function getXMLHttpRequest() {
"use strict";
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
xhr = new XMLHttpRequest();
}
} else {
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}
return xhr;
}
function exportation() {
"use strict";
var xhr = getXMLHttpRequest();
var scriptphp = "test_export_ajax_appel.php";
// j'appelle le formulaire en synchrone
xhr.open('POST', scriptphp, false);
// a partir de la, je navigue un peu dans le brouillard... car rien ne semble se passer
xhr.setRequestHeader('Content-type', 'text/plain');
xhr.setRequestHeader('Content-Disposition', 'attachment; filename="export_ajax.txt"');
xhr.send(null); // je n'ai pas de parametre a passer
// juste pour voir que ça s'est terminé...
alert('Fini!');
}
</script>
<title>Export avec AJAX</title>
</head>
<body>
<button
onclick="javascript: exportation();"
>Export
</button>
</body>
</html>
La page PHP appelée (test_export_ajax_appel.php) :
<?php
echo "Ligne 1 \n";
echo "Ligne 2 \n";
?>
Rien ne se passe, je ne comprends pas...Merci pour votre aide