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

jQuery Discussion :

Methode serialize() sur un form dans le javascript


Sujet :

jQuery

  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut Methode serialize() sur un form dans le javascript
    j'ai un formulaire du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form onsubmit="return maFonc(this)">
     
    ...
     
    </form>
    Je veux récupérer les valeurs du formulaires dans une fonction javascript et ensuite lancer une requête ajax.

    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
     
     
    function maFonc(form){
     
            s = form.serialize();
     
            $.ajax({
     
                   type: "POST",
     
                   data:s,    
     
                   url: "test.php",
     
                success: function(html){
     
                }
     
            });
     
            return false;
    }
    Apparement ça ne marche pas.
    Comment puis - je passer alors mes paramètres en une fois à test.php ?
    Puis - je inclure du jquery dans du js ?

    merci

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Il y a des exemples d'utilisation dans le plugin AjaxForm pour JQuery ici

  3. #3
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    J'ai déjà essayé cette solution.
    Le problème est que quand je valide le formulaire je reconstruis la partie de la page où se trouve mon formulaire.
    Et donc tous les événements que j'ai attribué à mes formulaires ne s'appliqueront plus à ces nouveaux formulaires qui ont été reconstruit.

    Je suis donc obligé de passer par une fonction javascript.
    Mais peut être est ce qu'on ne peut pas mettre de l'ajax dans du javascript.

    merci

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Citation Envoyé par piotrr Voir le message
    J'ai déjà essayé cette solution.
    Le problème est que quand je valide le formulaire je reconstruis la partie de la page où se trouve mon formulaire.
    Et donc tous les événements que j'ai attribué à mes formulaires ne s'appliqueront plus à ces nouveaux formulaires qui ont été reconstruit.
    Tu peux réassigner les évènements au retour de la requête, soit dans
    sussess, soit par un <script> dans ta réponse. (ou utiliser JQuery live, mais
    je crois qu'il supporte pas le submit)

    Citation Envoyé par piotrr Voir le message
    Je suis donc obligé de passer par une fonction javascript.
    Mais peut être est ce qu'on ne peut pas mettre de l'ajax dans du javascript.
    merci
    Qu'entends-tu par "on ne peut pas mettre de l'ajax dans du javascript" ?

  5. #5
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Citation Envoyé par marcha Voir le message
    Tu peux réassigner les évènements au retour de la requête, soit dans
    sussess, soit par un <script> dans ta réponse.
    Un petit exemple ?

    Qu'entends-tu par "on ne peut pas mettre de l'ajax dans du javascript" ?
    quand je fais un $.ajax({ dans ma fonction.

  6. #6
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Voici un exemple simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div id='toto'>
      <span>test</span>
    </div>
    Si tu assigne un évènement au click sur le span par exemple, qui appelle
    une fonction Ajax qui met à jour le div #toto et qui renvoie à nouveau un
    span sur lequel tu dois pouvoir cliquer pour reproduire le même effet, tu
    peux gérer ça ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $(document).ready(function() {
       initAction();
    });
     
    function initAction() {
      $('#toto span').click( function(event) { 
        $('#toto').load('page.php');
      });
    }
    Dans ce cas, après le rechargement de #toto, le nouveau span n'est pas
    cliquable. Trois possibilités:

    1) Utiliser Jquery live
    2) Renvoyer dans ta réponse à la requête ajax un script en fin de réponse:

    page.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    echo "<span>test</span>";
    echo "autre contenu";
    echo "<script type='text/javascript'>";
    echo "initAction();";
    echo "</script>";
    3) Appeler initAction() depuis la callback success après avoir mis à jour
    le contenu de #toto

    Pour répondre à ta deuxième question, bien sur que l'on peut mettre $.ajax
    dans javascript, ce n'est rien d'autre que du javascript :-)

  7. #7
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Objection!

    Si on rappelle initAction() à la fin du success ou à la fin de notre page générée on aura la fonction qui sera définie plusieurs fois !

    Et donc la première fois pas de problème.
    La deuxième fois l'évènement sera sollicité 2 fois.
    La troisième fois l'évènement sera sollicité 4 fois.
    La quatrième fois l'évènement sera sollicité 8 fois ...

    De plus, live() n'est pas adapté ici puisque je recharge des formulaires.

    Vous voyez le problème ?

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/02/2015, 00h16
  2. Réponses: 21
    Dernier message: 01/09/2010, 21h40
  3. Réponses: 1
    Dernier message: 26/02/2008, 00h05
  4. Mauvaise FORM envoyée sur 2 formulaires dans Firefox
    Par suricat dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 07/08/2007, 16h48
  5. Réponses: 2
    Dernier message: 11/01/2007, 12h18

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