IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Fonctionnement bizarre :-(


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    DBA Oracle / MySQL / SQLServer
    Inscrit en
    Janvier 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : DBA Oracle / MySQL / SQLServer

    Informations forums :
    Inscription : Janvier 2005
    Messages : 95
    Points : 54
    Points
    54
    Par défaut [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é :

    <?

    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.

  2. #2
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    PHP est interprété côté serveur.
    Javascript est côté client.
    Ajax est une passerelle.

    Quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <td><a href="javascript: changeEtat('<?=$comptEtat?>','<?=$nomSite?>')">
    <img src="./images/lock.gif" border="0" id="etat"></a></td>';
    Ta fonction changeEtat a des paramètres statiques et non dynamiques.

    De plus, la balise form (qui te sert à quelque chose ?) devrait te faire recharger ta page (je suppose que ta page s'appelle index.php).

    Vu que tu recharges ta page, "tu ne fais pas de l'ajax".

Discussions similaires

  1. [AJAX] Caractères bizarres avec AJAX
    Par davinout dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 02/04/2007, 22h33
  2. [HSQLDB]fonctionnement bizarre :/
    Par afrikha dans le forum JDBC
    Réponses: 9
    Dernier message: 12/09/2006, 08h15
  3. TWebBrowser qui fonctionne bizarrement
    Par sillycoder dans le forum Delphi
    Réponses: 2
    Dernier message: 18/07/2006, 10h00
  4. [AJAX] fonctionnement Ajax probleme
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/06/2006, 15h00
  5. Fonctionnement bizarre Dbase Memo
    Par zarbouine dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/04/2006, 09h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo