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

AJAX Discussion :

[AJAX] onchange + ajax


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 16
    Par défaut [AJAX] onchange + ajax
    Bonjour,

    Je vous expose mon problème:

    J'utilise ajax pour pouvoir envoyer un formulaire sans recharger la page j'utilise se code la :

    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
    <script language="JavaScript">
    			$(document).ready(function() {
    			// lorsque je soumets le formulaire
    			$('.monForm').on('submit', function() {		
                // appel Ajax
                $.ajax({
                    url: $(this).attr('action'), // le nom du fichier indiqué dans le formulaire
                    type: $(this).attr('method'), // la méthode indiquée dans le formulaire (get ou post)
                    data: $(this).serialize(), // je sérialise les données (voir plus loin), ici les $_POST
                    success: function(html) { // je récupère la réponse du fichier PHP
                    //alert(html); // j'affiche cette réponse
                    }
                });
            return false; // j'empêche le navigateur de soumettre lui-même le formulaire
    		});
    	});
    		</script>
    Quand je l'utilise avec un bouton sa marche sans probleme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form class="monForm" method="post" action="planning_cree.php">
    <input type="submit" name="Envoyer" value="Envoyer" onclick="this.disabled=true;this.value='Crée'"/> 
    </form>
    Âpres j'ai décider de remplacer le bouton par un input de type texte qui utiliserais l’événement onChange

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form class="monForm" method="post" action="planning_cree.php">
    <input type="text" name="Lundi" size="1" onchange="submit();" value="<?php echo $donnees2['Lundi']; ?>" />
    </form>
    Mais la sa m'ouvre la page planning_cree.php je voudais savoir se que je dois modifier sur le code ajax pour que sa n'ouvre pas la page planning_cree.php.

    Merci D'avance !!!

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Oui, c'est normal, l'événement submit n'est pas déclenché si la soumission du formulaire se fait par programmation (méthode submit()).

    La solution serait de mettre le code à lancer dans une fonction indépendante que tu pourrais appeler sur le onchange de ton champ et sur le onsubmit du formulaire.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 16
    Par défaut
    Merci de ta réponse Bovino

    Est'il possible de remplacer le submit(); par autre chose pour que sa appelle mon code en AJAX ?

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Bovino
    La solution serait de mettre le code à lancer dans une fonction indépendante que tu pourrais appeler sur le onchange de ton champ et sur le onsubmit du formulaire.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 16
    Par défaut
    J'ai fait sa :

    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
    <script>
    		function requete() {
    			// lorsque je soumets le formulaire
    			$('.monForm').on('submit', function() {		
                // appel Ajax
                $.ajax({
                    url: $(this).attr('action'), // le nom du fichier indiqué dans le formulaire
                    type: $(this).attr('method'), // la méthode indiquée dans le formulaire (get ou post)
                    data: $(this).serialize(), // je sérialise les données (voir plus loin), ici les $_POST
                    success: function(html) { // je récupère la réponse du fichier PHP
                    //alert(html); // j'affiche cette réponse
                    }
                });
            return false; // j'empêche le navigateur de soumettre lui-même le formulaire
    		});
    	}
    		</script>
    et j'ai appeler la fonction ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form class="monForm" method="post" action="planning_cree.php">
    <input type="text" name="Lundi" size="1" onchange="submit();" value="<?php echo $donnees2['Lundi']; ?>" />
    </form>
    Mais cela ne marche pas

    Peut tu éclairer ma lanterne stp

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ce n'est pas dans la fonction qu'il faut assigner les événements !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function requete() {
    // ...
    }
    $('.monForm').on('submit', requete);
    $('.monInput').on('change', requete);
    En ajustant bien sûr la classe de ton input.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 16
    Par défaut
    Je me suis pas tromper dans l’appelle dans le onchange ?


  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 16
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Ce n'est pas dans la fonction qu'il faut assigner les événements !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function requete() {
    // ...
    }
    $('.monForm').on('submit', requete);
    $('.monInput').on('change', requete);
    En ajustant bien sûr la classe de ton input.
    Je dois bloquer sur un truc j'ai ajuster mon code en mettant comme tu ma dit c'est a dire de séparer l'assignement des événements de la fonction.
    je l'est mi juste apres mais je sais pas si c'est la bonne place je suis assez perdu .
    je pense qu’après sa je vais toucher au but.

Discussions similaires

  1. Réponses: 22
    Dernier message: 17/11/2009, 18h16
  2. [AJAX] Onchange sans rafraichir la page
    Par mme_chelaou dans le forum AJAX
    Réponses: 4
    Dernier message: 17/08/2009, 14h26
  3. [AJAX] 2 select Onchange ajax
    Par mohsen01 dans le forum AJAX
    Réponses: 17
    Dernier message: 30/04/2009, 00h15
  4. [AJAX] onchange + reload
    Par altecad dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/02/2009, 07h44
  5. [AJAX] onChange pas assez fonctionnel
    Par baggie dans le forum Général JavaScript
    Réponses: 32
    Dernier message: 20/05/2008, 10h59

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