[AJAX] Fonctionnement bizarre :-(
Bonjour,
Voilà mon problème, dans une page web j'ai une icone qui permet d'activer une fonctionnalité ou non en cliquant dessus. Je fais cette opération en ajax pour éviter de recharger toute la page. Les actions effectuées en cliquant sur l'icone sont les suivantes :
- Change l'icone
- Créeait un fichier flag
Voici le code un peu simplifié :
Citation:
<?
function setEtat($name, $etat) {
global $cheminVerrou;
$file2create = $cheminVerrou.'/'.$name.'.lock';
if(trim($etat) == "0") {
if(!file_exists($file2create)) {
$handle = fopen($file2create, "w");
fclose($handle);
}
}
elseif(trim($etat) == "1") {
if(file_exists($file2create)) {
unlink($cheminVerrou.'/'.$name.'.lock');
}
}
}
switch($_GET["do"]) {
case "ajax":
switch($_GET["action"]) {
case "etat":
setEtat($_GET["nom"],$_GET["newEtat"]);
break 1;
}
break 1;
}
?>
<head>
<script>
function ajax(fichier) {
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else {alert ('erreur');return(false)};
}
function changeEtat(num, nom) {
var valeurActuelle, newImg, newEtat, message;
valeurActuelle = document.getElementById("etat").src;
valeurActuelle = valeurActuelle.substring(valeurActuelle.lastIndexOf("/"));
if(valeurActuelle == '/ok.gif') {
newImg = './images/lock.gif';
newEtat = '0';
message = 'Voulez vous vraiment désactiver cette fonction ?'
}
else if(valeurActuelle == '/lock.gif') {
newImg = './images/ok.gif';
newEtat = '1';
message = 'Voulez vous vraiment activer cette fonction ?'
}
if(confirm(message)) {
ajax('?do=ajax&action=etat&nom='+nom+'&newEtat='+newEtat);
document.getElementById("etat"+num).src= newImg;
}
}
$comptEtat = 0;
$nomSite = "SITE1";
//-->
</script>
<form name="myform" method="post" action="index.php">
<table align="center" cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td><a href="javascript: changeEtat('<?=$comptEtat?>','<?=$nomSite?>')">
<img src="./images/lock.gif" border="0" id="etat"></a></td>';
</td>
</tr>
</table>
</form>
</body>
Mon problème : le changement d'image fonctionne bien. Par contre la création du fichier de flag ne fonctionne qu'une fois => je peux le créer puis le supprimer (activation puis désactivation) et ensuite ça ne fonctionne plus. Il faut que j'ouvre un nouveau navigateur.
Je ne commprend vraiment pas pourquoi ça fait ça...
D'avance merci pour votre aide.