Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/03/2011, 16h14   #1
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Par défaut Fonction Ajax sur clique qui s'exécute plusieurs fois

Bonjour,

Je n'arrive pas à comprendre pourquoi cette fonction "insertionCde" s'exécute une ou plusieurs fois sur un clique de bouton de façon aléatoire.

Je m'explique:
Parfois la fonction insère bien une seule commande, et à partir de 3 articles (ou plus) la probabilité d'avoir plusieurs fois la même commande augmente et je me retrouve avec 2 ou 3 fois la même commande.

Le clique peut-il se jouer 2 fois ? (à mon insu )

Voici ce qui est chargé dans le DOM :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$("document").ready(function()  {
 
affMasqBtn(); // Affiche ou masque le bouton "Valider la commande" au chargement de la page.
 
$("#validerCde").click(function() {
  insertionCde(); // Insertion commande.
});
 
annulerCde(); // Annulation d'une commande au clique sur l'icone Annuler (croix rouge).
 
visuCde();
 
$('.input_cmd').keyup(function() {
   affMasqBtn(); // Si une donnée est saisie dans quantité on affiche le bouton "Valider la commande".
})
 
controleQte();
 
});
La fonction qui insère les commandes :
Code :
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
function insertionCde(){
        var date = $("#date").val();
        var commentaire = $("#commentaire").val();
            if(date!="") {
                if(confirm("Veuillez confirmer la création de la commande")) {
                    var str = $(".input_cmd").serialize(); // serialize les données.                     
                    $.ajax({
                        type: "GET",
                        url: "nouvelle_commande.php", // Insertion de la commande
                        data: { refqte:str,d:date,c:commentaire },
                        success: function(data){
                            if(data!="")
                            {
                                chargerData(); // Rechargement de la page avec un submit.
                            }
                            else
                            {
                                $('#cdeOk').html("une erreur est survenue !");
                            }
                        }
                    });
                } 
                else {
                                return false;
                }
            }
            else {
                alert("Veuillez saisir une date de livraison");
                $( "#date" ).datepicker( "show" ); // On affiche le calendrier.
            }
}
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 16h27   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
c'est un bouton de formulaire ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 17h25   #3
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Citation:
c'est un bouton de formulaire ?
Oui.
type="button"
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 18h08   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
et chargerData(); fait quoi ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 18h11   #5
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Citation:
et chargerData(); fait quoi ?
Juste recharger la page comme avec F5.

arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/03/2011, 18h17   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
et l'action du form c'est quoi ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 18h21   #7
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : février 2010
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Développeur
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 360
Points : 545
Points : 545
Bonjour,
Je suis peut-être un peu hors-sujet, mais quel est l'intérêt d'enregistrer les données avec un requête ajax si à chaque appel on envoie le formulaire ?
Ne suffirait-il pas d'enregistrer les données sur le serveur avant rechargement ?
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 18h22   #8
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
d'ou la question de savoir ce qu'il y a dans l'action du form...

si le form pointe sur la même page il y a de fortes chances pour que ça boucle ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 18h24   #9
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Citation:
et l'action du form c'est quoi ?
Code :
<form name="form" id="form" action="<?php echo $self; ?>" method="POST">
J'ai testé la page sans form, donc elle ne se recharge pas, mais le bug est toujours présent.
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 18h30   #10
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Citation:
Ne suffirait-il pas d'enregistrer les données sur le serveur avant rechargement ?
Si effectivement, mais n'ayant pas encore réussi à mettre une partie de ma page à jour avec ajax, j'ai opté pour un vulgaire rechargement, moins propre.
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 18h39   #11
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
ben fait soit l'un soit l'autre, mais pas les deux ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 18h40   #12
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : février 2010
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Développeur
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 360
Points : 545
Points : 545
Ok ! Le but final est tout de même de ne pas recharger la page entièrement !
Je tiens alors à vous présenter mes excuses à tout les deux !
J'avais mal compris la question de SpaceFrog et l'utilisation du submit.
Je pensais du coup que le submit aurait pu suffire, sans utiliser d'ajax...
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 18h44   #13
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Non nadox tu as tout a fait raison ...

il peut soit mettre ses tables à jour au moyen d'ajax et mettre la page a jour sur le onsuccess

ou

soumettre le form avec rechargement complet de la page sans ajax.

Honêtement je ne vois l'nteret de faire un mix des deux si ce n'est de mettre deux fois plus de temps ???
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 18h46   #14
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Citation:
ben fait soit l'un soit l'autre, mais pas les deux ...
Le rechargement n'est pas en cause.
Le rechargement ne relance pas l'insertion des données puisque sans celui-ci, j'ai quand même le doublement ou le triplement des commandes.

Je reconnais que c'est "Shadoks" de se servir du rechargement et de l'ajax dans la même page.
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 18h49   #15
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Citation:
Honêtement je ne vois l'nteret de faire un mix des deux si ce n'est de mettre deux fois plus de temps ???
Je suis d'accord, mais je n'ai pas encore réussi à mettre la page a jour sur le onsuccess.
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 18h54   #16
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : février 2010
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Développeur
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 360
Points : 545
Points : 545
Oui oui si je comprends bien (cette fois-ci) le rechargement avec un submit n'est qu'une façon d'éviter de faire F5 pour la mise au point

Le problème vient donc du JS ou du PHP(voire SQL...). Le paramètre refqte est-il vraiment en cause(donc erreur coté serveur) ?

Je ne sais pas quels outils tu utilise pour la mise au point, mais il faudrait savoir si la requête est unique ou non (je vérifie ça avec l'onglet réseau de firebug)
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 18h57   #17
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
alors le souci est coté serveur ...

le bouton submit envoie les données au serveur sur une page qui insère les données

sur le retour la page du form est rechargée et renvoyant les données maios qui apparemment ne sont pas réinsérées dans la table ?

Si c'est le cas le bug est au niveau de l'insertion coté serveur donc
rien a voir avec js
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 19h09   #18
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : février 2010
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Développeur
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 360
Points : 545
Points : 545
Le bug existe sans le rechargement du formulaire, de plus l'action du formulaire n'est pas "nouvelle_commande.php", aucun risque que le post enregistre sur le serveur !
Donc le rechargement n'est véritablement pas en cause.

Par contre, le seul moyen de s'assurer que le javascript n'est pas en cause est de vérifier si plusieurs requêtes ne sont pas envoyées au moment du click. J'ai proposé firebug qui permet de vérifier côté client, mais on peut aussi afficher les logs coté serveur (en écrivant une ligne de debug pour chaque requete)

Si il n'y a bien qu'une seule et unique requête, alors le bug se situe sûrement du côté serveur (ce qui expliquerait le lien avec la quantité puisque c'est un des paramètre envoyés...)
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 19h12   #19
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Citation:
Le bug existe sans le rechargement du formulaire
Oui.

Citation:
le bouton submit envoie les données au serveur sur une page qui insère les données
Je n'ai pas de bouton submit.
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 19h33   #20
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
rajoute par sécurité

Code :
1
2
3
4
$("#validerCde").click(function() {
  $(this).attr('disabled','disabled')
  insertionCde(); // Insertion commande.
});
au moins ça ne viendra pas de clicks multiples
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h33.


 
 
 
 
Partenaires

Hébergement Web