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] AJAX et reception de données d'un formulaire


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2005
    Messages : 202
    Points : 124
    Points
    124
    Par défaut [AJAX] AJAX et reception de données d'un formulaire
    Bonjour, j'ai un petit soucis avec AJAX :

    J'ai le formulaire suivant dans une ligne de tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <tr id="L1">
      <td>
        <form name="F1" method="POST">
          <input type="text" name="T1">
          <input type="text" name="T2">
          <input type="checkbox" name="C1">
        </form>
      </td>
    </tr>
    et ainsi de suite avec les autres lignes

    Ce qui fonctionne pour le moment :
    -> Remplacer le contenu de la balise TD par un message comme quoi le form est validé

    Ce que je n'arrive pas à faire :
    -> Récupérer les données du formulaire pour ensuite les traiter

    Je précise que ma page ne doit en aucuns cas être rechargée
    Ce que je cherche donc c'est un exemple de code au niveau JAVASCRIPT
    pour permettre la récupération de mes données.

    J'ai bien entendu fais des recherches sur le forum mais la pluspart des exemples fournis
    s'imtègrent surtout au code donné en exemple, normal :-)

    Merci d'avance pour le coup de main

    Stéphane

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 120
    Points
    120
    Par défaut
    Mais donc des id a ttes champs de forumaire.
    Accede y grace a document.getElementById(id)et apres appelle les methodes correspondante.
    par example document.getElementById(id).value permet de recuperer ou de defnir le texte d'un champs texte.
    Voivla j'espere que ca t'a aidé.

    APrés si tu as des choses a fair cote serveur avec c donnée rien ne t'empeche d'utiliser une page php, asp,J2EE.................
    pour recuperer le sdonnée et faire ton petit menage.
    Cette page sera chrgée grace a l'objet XMLHttrRequest.
    Si tu as un souci dans la conception n'hesite pas a demander plus d'info.
    Bonne chance

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Points : 149
    Points
    149
    Par défaut
    Le mieux est de mettre un id au form directement dans ce cas, et ensuite pour accéder aux différents champs, et après pour accéder à tes champs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var form = getElementById('form1');
    // et pour accéder aux champs form.T1.value, form.T2.name
    Ca t'évite de mettre des id pour tous les champs, uniquement 1 par formulaire, et tu accèdes à ses champs.

    Ou à la limite, si tu veux pas mettre d'id supplémentaires(c'est chiant faut que ca soit unique.. :p) tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var the_tr = document.GetElementById('L1');
    var the_forms = the_tr.getElementsByTagName('form');
    var form = forms[0];
    // et ensuite c'est pareil

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 120
    Points
    120
    Par défaut
    Attention le DOM n'est pas reconnu de la même facon par tous les navigateurs web.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2005
    Messages : 202
    Points : 124
    Points
    124
    Par défaut
    Merci pour les infos, ça fonctionne maintenant en faisant comme ceci :
    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
    var http = createRequestObject();
     
    function createRequestObject()
    {
        var ro;
        ro = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
        return ro;
    }
     
    function handleResponse()
    {
        if(http.readyState == 4) {
            var response = http.responseText;
            var update = new Array();
     
            if(response.indexOf('|') != -1) {
                update = response.split('|');
                document.getElementById(update[0]).innerHTML = update[1];
            }
        }
    }
     
    function sndPost(formName, arg)
    {
        var formF = document.forms[formName];
        var paramF = "";
     
        for (i=0; i<formF.length; i++) {
            paramF += "&" + formF.elements[i].name + "=" + formF.elements[i].value;
        }
     
        http.open('GET', 'ajax.php?param='+formName+'&arg='+arg+paramF);
        http.onreadystatechange = handleResponse;
        http.send(null);
    }
    Toutes les données sont envoyées dans la table qui va bien.


    Merci pour le coup de main.

    Stéphane

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2005
    Messages : 202
    Points : 124
    Points
    124
    Par défaut
    De retour, car biensur il y un autre soucis : le remplacement de la ligne ne se fait plus et ceci seulement sous IE,
    sous Firefox c'est nickel.
    En clair, la ligne de ma table contenant le formulaire [n] n'est plus remplacée
    Avant de cliquer sur la case à cocher la ligne contenant le form ressemble à ceci :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <table>
    <form action="checkline.php" method="POST" id="F421" name="F421">
      <tr id="O421">
        <td align="left">serveur n°1</td>
        <td align="center"><b class="green">Jobset n°1</b></td>
        <td align="left">Commentaire</td>
        <td align="center"><input type="checkbox" name="checkFormLine" onClick="sndPost('F421', '421')"></td>
      </tr>
    </form>
    -> n autres form...
    <form....
    ....form>
    </table>
    Le ID du TR est incrémenté pour chaques lignes, idem pour les formulaire

    Après avoir cliqué la ligne était remplacée par ceci avec ce code :
    -> ici $_GET['arg'] vaut 421

    Fichier ajax.php :
    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
    <?php
    switch($_GET['param']) {
    case 'F'.$_GET['arg']:
        /**
         * Ici la partie du code pour l'insertion dans la database
         * Aucuns problèmes à ce niveau
         */
        echo 'O'.$_GET['arg'].'|<tr>
        <td align="left"><b class="blue">'.$result['Ressource'].'</b></td>
        <td align="center">'.$result['Jobset'].'</td>
        <td align="left">'.nl2br($result['Commentaire']).'</td>
        <td align="left">Action valid&eacute;e</td>
        </tr>';
    }
    ?>
    Déjà, les balises du formulaire sont-elles placées comme il faut ?
    Si ce n'est pas le cas je n'ai pas trop le choix, vu que j'ai un formulaire par ligne.

    openWorld => Tu parle de DOM, serait-ce le problème ici ?

    Stéphane

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2005
    Messages : 202
    Points : 124
    Points
    124
    Par défaut
    Après recherche il faudrais en fait un nodeCleaner...
    Pour moi, javascript = galère
    Je ne remplace donc que le contenu d'une cellule de ma ligne et non plus la ligne entière.
    Ca au moins ça fonctionne nickel, donc je peux dire que l problème est résolut.

    Stéphane

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 120
    Points
    120
    Par défaut
    Si pour toi javascript = galere. Essaye GWT

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

Discussions similaires

  1. Reception de données avec ajax
    Par yann18 dans le forum jQuery
    Réponses: 13
    Dernier message: 08/06/2011, 17h26
  2. [AJAX] Récupérer directement les données d'un formulaire
    Par linar009 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 23/12/2007, 13h55
  3. [AJAX]problème d'envoie de données méthode POST
    Par xave dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/07/2006, 16h35
  4. [AJAX] AJAX et envoie de données d'un formulaire
    Par gunderam dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/06/2006, 18h17
  5. [AJAX] probleme de récupération de donnée par GET
    Par Death83 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/06/2006, 17h00

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