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

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    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 : 36
    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
    Points : 2 498
    Points
    2 498
    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
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    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
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    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
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    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 : 36
    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
    Points : 2 498
    Points
    2 498
    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

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Ce sujet m'intéresse, malheureusement je n'ai pas réussi à comprendre le script proposé.

    J'ai compris qu'il fallait appeller update() et que cette fonction déclenchait une page qui permet par exemple de modifier des données, par contre j'ai un peu de mal à comprendre ce que vaut le paramètre xhr de setContent.

    Si j'ai bien compris il faut appeller cette fonction pour actualiser un div par exemple si je veux afficher la liste des connectés sans actualiser la page on peut utiliser la page appellée dans update pour faire une requête etavec setcontent afficher le nombre de connecté.

    J'espère que c'est ça, personnellement je voudrais simplement faire un système de vote qui n'oblige pas l'utilisateur à recharger la page une fois voté (un peu comme sur Dailymotion, on a pas besoin de quitter la page pour voter, et heureusement). Mais la perspective de pouvoir réaliser des requêtes sans charger la page est vraiment intéressante!

    Merci d'avance pour votre aide

  8. #8
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    Par défaut
    oui c'est bien ça!

  9. #9
    Membre averti Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Points : 356
    Points
    356
    Par défaut
    xhr, représente l'objet XMLHttpRequest

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Mais je ne comprends pas ce qu'il faut mettre comme argument à la place de xhr

+ 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