11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour a tous et toutes,
j'ai un formulaire qui contient qui contient un champ hidden (nom fichier) et deux bouton. si l'utilisateur clic sur supprimer alors la page supprime est appelé pour supprimer le fichier
voici le code associé à l'evement click de mon boutton supprimer:
$("#bnt_fic").click(function(){  
var boutton=$(this).val();
//$("#confxml input[type='hidden']").attr("value") à pour valeur le fichier devant être supprimé
  $.ajax({
		type: "POST",
		data:'bnt_fic='+button+ '&nom_fichier'+$("#confxml input[type='hidden']").val(),
		url: $("#confxml").attr("action"),
		success: function(retour,statut){ 
			alert(statut);
		},
		error : function(resultat, statut, erreur){
			alert(resultat+""+statut+""+erreur);
		}
	});
 })

voici le code de la page php qui supprime le fichier en question:
if(isset($_POST['bnt_fic']) && $_POST['bnt_fic']=="Supprimer" ){
unlink($_POST['nom_fichier']);
echo header("location:page.php");
}

voici le formulaire :
<form method=POST action=supprime.php id=confxml>																		
  <input type=hidden name=nom_fichier value=$rep>																	
  <input type=submit name=bnt_fic value=gerer ><input type=button name=bnt_fic id=bnt_fic value=Supprimer >															
</form>

le soucis est que la fonction succes de ma requete ajax s'execute mais le fichier n'est pas supprimer je sais pas pourqoi:?
Modérateur
Bonjour,

Le code contient plusieurs erreurs.

1) Dans le code html, il faut remplacer value=$rep par value="<?php echo $rep;?>", il vaut mieux mettre de "" autour des valeurs des attributs, et j'aurais mis un name différent pour chaque bouton. Par exemple :


<form method="POST" action="supprime.php" id="confxml">																		
  <input type=hidden name="nom_fichier" value="<?php echo $rep;?>">																	
  <input type=submit name="bnt_fic_gerer" value="gerer" >
  <input type=button name="bnt_fic_supprimer" id="bnt_fic" value="Supprimer" >
</form>	


2) Dans le code de la fonction click()
2a) tu mets var boutton=... puis plus loin, tu utilises button et non pas boutton (il faut mettre le même nom aux deux endroits)
2b) il manque un "=" après &nom_fichier

3) Dans le code php, j'ai remplacé echo header("location:page.php"); par echo "OK" pour faire fonctionner l'exemple.

Amicalement,
Modérateur
Bonjour,

Tout dépend ce que tu supprimes et ce que tu veux mettre à la place.

A priori, si ta page est déjà affichée, supprimer un fichier via ajax sur le serveur ne changera pas le contenu d'une div de cette page, sauf si au retour d'exécution du script qui a fait la requête ajax, ton code modifie ce contenu, ou si tu provoques le rafraichissement de la page et que celle-ci est censé afficher du contenu qui était dans le fichier supprimé.

Soit dit en passant, quand on supprime quelque chose via ajax sur le serveur, c'est un poil dangereux si on ne fait pas bien gaffe à la manière dont on déclenche l'action côté client, et à ce qu'on met dans le fichier php qui va faire la suppression côté serveur.

Amicalement,
Smiley sweatdrop je suis pas sûr d'avoir très bien compris mais en gros y'a t'il une fonction predefinis pour le rafraichissement des elements ou pas?
Modifié par itachis (20 Jun 2014 - 12:56)
Modérateur
Bonjour,

Normalement, il n'y a rien à rafraichir. Y-a-t-il quelque chose à rafraichir dans ton cas ?

Amicalement,
Oui parceque le fichier supprimer est afficher sur l'interface donc je veux actualiser la div qui affiche les fichiers pour que la modification soit pris en compte au niveau de l'interface sans actualisé la page! Smiley smile Smiley rolleyes
Modérateur
Bonjour,

Si ta div a un id (par exemple <div id="contenu">, tu peux mettre ce que tu veux dans cette div avec du code javascript du genre (à exécuter après ta requête ajax) :


var s="<p>N'importe quel code HTML</p>";
document.getElementById("contenu").innerHTML=s;


Amicalement,