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 :

onload en boucle


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut onload en boucle
    Bonjour,

    J'utilise THELIA (solution ecommerce)

    Dans une commande.html
    il faut rentrer le code promo puis faire un submit
    pour que le client puisse voir sa promo affichee.

    Ce que je souhaite faire c'est passer directement le code promo pour que le client n'ai pas a le rentrer ni a le submit.
    Cela "fonctionne",
    notament avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="document.formulaire.submit();">
    faisant reference au form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form action="commande.php?action=codepromo&amp;code=#CLIENT_EMAIL" name="formulaire" method="get" id="formulaire" >
    <input type="hidden" name="action" value="codepromo" />
    <input name="code" type="hidden" id="code"  value="#CLIENT_EMAIL"/>
    Le probleme c'est que mon onload tourne en boucle...

    J'ai essaye de rajouter a la suite un break:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="document.formulaire.submit();break;">
    ou un exit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="document.formulaire.submit();exit;">
    les 2 arretent le onload mais j'obtiens des erreurs de syntaxe: unlabeled break must be inside loop or switch
    j'ai rajoute des parentheses mais cela n'a rien solutionne...

    J'essaie sans succes pour l'instant(depuis 3 jours, je ne suis pas tres malin ) de finaliser ce "tout petit" probleme
    mais la j'avoue que mes nerfs commencent a lacher...
    Une aide serait la bien venue.
    Merci.

    Reg

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    il te suffit d'ajouter un paramètre dans l'url appelée par l'utilisateur.
    Dans ta page, si tu trouves le paramètre ( = si il est renseigné), tu déclenches le onload ( => submit ), sinon tu ne le déclenches pas.

    Comme tu n'auras pas répercuter ce paramètre dans ton formulaire, le submit auto ne devrait avoir lieu qu'une fois.

    Ça correspond ?

    A+

  3. #3
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    Bonjour E.Bzz,

    J'ai un doute sur le code que tu me propose de mettre en place...
    si c'est par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="document.formulaire.submit();code.value='#CLIENT_EMAIL';">
    Cela n'arrete pas le onload...
    Mais je crois surtout que je n'ai pas bien saisi ce que tu proposais...

    Reg

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par regis3 Voir le message
    Mais je crois surtout que je n'ai pas bien saisi ce que tu proposais...
    Exact

    Je te proposais de mettre en place une url "utilisateur" (celle sur laquelle il cliquera pour accéder à la page) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ta_page.php?param1=p1&param2=p2&reload=1
    Ce paramètre "reload" n'étant défini qu'à cet endroit.

    Ensuite, dans ta page, tu testes si ta variable d'url "reload" est = '1'
    (désolé j'ai pas la syntaxe PHP )
    Si il est = '1' , tu génères ton onload qui fait le submit auto.
    Sinon, tu ne le génères pas.

    Lors du submit auto, comme ton <form> ne va pas renvoyer ce paramètre "reload", tu le détecteras, ne re-génèreras pas le onload, et donc le submit auto n'aura pas lieu une seconde fois.

    La boucle est ... cassée

    A+

  5. #5
    Membre averti
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut
    Bonjour,

    Mon client arrive par une page connexion qui renvoie sur une commande.php qui elle renvoie sur une commande.html
    En fait la bonne page pour mes besoins serait:
    commande.php?action=codepromo&code=client@yahoo.fr

    client@yahoo.fr est renvoye par le form dans la page commande.html a la place de: value="#CLIENT_EMAIL"

    Lorsque j'arrive j'ai une page:
    commande.php?action=codepromo&code=
    sans la valeur du code
    c'est pour cela que je suis oblige de passer par un faux submit lors de onload.

    Pourriez vous me repreciser votre idee de facon plus concrete
    Merci.

    Ce matin apres un autre essai infructueux j'ai plante THELIA, je vais sans doute etre oblige de reinstaller l'application

    Mais des que c'est fait j'essairais votre proposition(redetaillee...)

    Regis3

  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 : 54
    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
    Salut,

    Le principe est assez simple, ton code pose un problème, car au chargement de la page, tu soumets automatiquement ton formulaire, donc la page se recharge, donc tu resoumets ton formulaire, la page se recharge etc.

    La solution que te propose E.Bzz est d'ajouter un paramètre à l'URL au premier submit, ce paramètre, dont tu testeras l'existence au chargement (voir comment le récupérer ici) ce qui te permettras de savoir si ton formulaire a déjà été soumis
    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

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. onLoad et la boucle for
    Par julienlecaro dans le forum ActionScript 1 & ActionScript 2
    Réponses: 9
    Dernier message: 19/12/2008, 12h08
  3. Onload en boucle?
    Par Micke7 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/02/2008, 11h15
  4. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

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