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] Comment envoyer au serveur une seul info sans recharger la page


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Par défaut [AJAX] Comment envoyer au serveur une seul info sans recharger la page
    Bonjour,

    je cherche à envoyer au serveur PHP une variable javascript d'une page dès qu'elle est modifiée mais sans rechargement de la page.
    je pense qu'on doit faire ça en AJAX mais je n'ai pas trouvé d'exemple aussi bateau d'utilisation d'AJAX. Je n'ai pas besoin d'un super-méga control dynamique, juste envoyer une à deux valeur sans reload de la page.

    comment faire ?

  2. #2
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Par défaut
    En effet tu dois utiliser ajax... Bien que c'est pas la bonne section je vais te donner un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    function update()
    {
        alert("Update!");
        xhr = defineXMLHttpRequest();
        xhr.onreadystatechange = function() { setContent(xhr, container); };
     
        xhr.open("GET", "http://ta_page_a_appelé.php");
        xhr.send(null);
    }
     
    function defineXMLHttpRequest()
    {
        var xhr=null;
     
        if (window.XMLHttpRequest) { 
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        return xhr
    }
     
    function setContent(xhr, container)
    {
        if(xhr.readyState == 4)
        {
            var docXML= xhr.responseXML;
            var items = docXML.getElementsByTagName("response");
     
            document.getElementById(container).innerHTML = items.item(i).firsChild.data;
     
        }
    }
    Il te suffit d'appeler la fonction update() qui va appeler la page que tu veux et ensuite quand l'action est exécuter tu met à jour avec la fonction setContent()
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Par défaut ok
    merci je crois avoir presque tout compris sans avoir lu une seule doc AJAX grâce à ton exemple.

    juste une derniere question :
    Si je nai pas de contenu à modifier dans ma page HTML une fois ma valeur passée au serveur (avec ou sans succès), donc je n'ai pas à faire appel à la fonction setcontent ?
    je souhaite juste envoyer une info, peut-importe que le serveur arrive ou pas à la traiter/stocker/reception. Je me fiche du message d'arreur en résultant.


    et dans le cas où je souhaite faire appel à SetContent, je suppose que je dois utiliser un timer pour mettre à jour/tenter de mettre à jour la page ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Par défaut
    concrêtement, je souhaite juste comptabiliser le nombre d'action COPIER-COLLER (via le comptage d'evenement key avec combinaison des touche CTRL+C) que fait un utilisateur et l'enregistrer dans son profil.
    c'est pour un site où il a un nombre restraint de "profitade du contenu" :-) et aussi pour des stats.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Par défaut lol
    lol je me mets un troisième post consécutif..mes idées fusent..

    ai-je vraiment besoin d'utiliser AJAX pour envoyer une action serveur sans souhaiter de réponse ?

    1.
    si j'affiche une popup de taille 1x1 (oui presque invisible) de la page PHP qui fait mon action, ça peut suffir non ?(sauf blockage popup du navigateur).
    c'est possible non ?

    2.
    autre idée : si à la place d'une popup, je modifie le innerHTML de mon document de manière à lui mettre une frame (de taille 1x1) ayant pour page source ma page .PHP
    ça peut aussi le faire non ?

    ps : est-ce qu'un gentil modérateur pourrait déplacer mon sujet en section AJAX s'il lui plaît.....?

  6. #6
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Par défaut
    Boh en ajax c'est plus simple... il te suffit de déclencher une fonction JS quand l'utilisateur fais un ctrl+c et dans ce cas effectivement tu n'as pas besoin de la fonction setContent tu peux donc supprimer toute la fonction ainsi que cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.onreadystatechange = function() { setContent(xhr, container); };
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/08/2012, 18h02
  2. Recharger une balise <div> sans recharger la page
    Par bebest93 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/12/2008, 12h25
  3. Réponses: 11
    Dernier message: 06/12/2005, 08h23

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