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 :

[history.back]Retour page precedente sans afficher les eventuels messages d'erreurs


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 93
    Points : 60
    Points
    60
    Par défaut [history.back]Retour page precedente sans afficher les eventuels messages d'erreurs
    Bonjour,
    Je travaille sur un projet web struts, ajax. J'utilise "history.back()" de javascript pour inserer des boutons "precedent" dans mes pages. Ceci fonctionne bien.
    Voici mon probleme : si le formulaire de la page 1 n'est pas valide, un message d'erreur s'affiche. Si je corrige ensuite l'erreur, je vais à la page 2. En cliquant sur mon bouton precedent de la page 2, je retourne sur la page 1 mais le message d'erreur reste présent.
    Comment faire pour retourner sur ma page avec les bonnes valeurs sans message d'erreur.
    J'ai pensé à recharger la div dans laquelle j'ecris mon message d'erreur en la vidant comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function reload (idForm, idErreur) {
    	$(idErreur).innerHTML = "";
    	alert("ok");
    	$(idForm).submit();
    }
    Quand l'alert s'affiche, mon contenu est bien remplacé; mais quand je fais precedant, le message d'erreur s'affiche de nouveau.
    Des suggestions ?
    Merci d'avance

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 265
    Points : 284
    Points
    284
    Par défaut
    salut,

    dis moi si je me trompe mais tu "ajoutes" tes messages d'erreur cote serveur et non cote client ? (parce qu'a priori si les messages d'erreur etaient ajoutes uniquement cote client tu n'aurais pas le pb je pense).

    Dis moi si c'est bien ca pour que je continue a t'aider..

  3. #3
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 93
    Points : 60
    Points
    60
    Par défaut
    Oui en effet, mes messages sont affichés côté serveur via le validate de Struts.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 265
    Points : 284
    Points
    284
    Par défaut
    c'est donc pour ca que tu as ce probleme

    Du coup.. les solutions sont :

    1) Tu ajoutes un check cote client pour eviter que ca soit le serveur qui ajoute les erreurs. Par contre si une erreur passe au "travers" de ton check client tu auras toujours le meme probleme. (et si tu as trop de check a faire tu risques de pas avoir envie de faire ca :o)

    2) Tu fais un history.back(-2) pour revenir a la page qui a ete chargee la premiere fois (sans erreur). Ca veut dire que tu peux avoir a faire history.back(-10) si l'utilisateur a fait 10 submit avec erreurs.. donc tu dois compter le nombre d'erreurs sucessives de l'utilisateur..

    3) tu fais un onload en javascript pour verifier de quelle page tu viens. Si tu viens de la meme page tu laisses le message d'erreur, sinon tu supprime le innerHTML

    4) tu n'utilise pas le history.back !! Tu enregistre tes formulaires et tu les re-soumet histoire d'eviter les bugs du history.back !

    5) surement plein d'autres solutions .... :o)

  5. #5
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Une autre
    3) tu fais un onload en javascript pour verifier de quelle page tu viens. Si tu viens de la meme page tu laisses le message d'erreur, sinon tu supprime le innerHTML
    3 bis) Tu caches ou supprimes tes messages d'erreurs au moment où tu navigues de la page 1 vers la page2. En cas de retour cela évitera de percevoir furtivement les message avant qu'ils soient supprimés


    ERE
    Quand une tête pense seule, elle devient folle.

  6. #6
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 93
    Points : 60
    Points
    60
    Par défaut
    Merci pour vos réponses.
    Je m'interesse justement à la solution 3.
    Mon probleme déjà est de savoir de quelle page de vient.

    Sinon pour repondre au 3bis, ma fonction initiale (voir plus haut) avait pour but de cacher mes messages via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(idErreur).innerHTML = "";
    avant de passer à la page suivante mais quand je fais un "precedent", le message d'erreur apparait toujours.

  7. #7
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut RSH ?
    Le souci c'est que IE génère bien le onload sur le bak, là où firefox semble absent. Et Firefox gère bine le innerHTML='' au retour là ou IE semble absent...

    Au final tu devrais peut-être viser une solution telle que RSH http://code.google.com/p/reallysimplehistory/, qui utilise les bookmark pour stocker les infos de navigation.

    ERE
    Quand une tête pense seule, elle devient folle.

  8. #8
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 93
    Points : 60
    Points
    60
    Par défaut
    Je suis resté sur la solution 3 avec cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (document.referrer != window.location) {
    		$(idErreur).innerHTML = "";
    	}
    J'ai un autre probleme c'est que le test se fait sur les url des pages or dans mon cas, il peut arriver que l'url reste la même pour deux appel de jsp differentes et successives. Du coup ca ne marche pas.
    Pouvez vous me proposer un autre test ? Merci d'avance

    PS : dans mes tests
    $(idErreur).innerHTML = "";
    marche aussi bien sur IE que FF

  9. #9
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Paramètre
    Ajoute un paramètre unique lors de l'appel à ta JSP; par exemple un timestamp. Tu ne l'utiliseras pas au niveau server mais il permettra l'unicité.

    ERE
    Quand une tête pense seule, elle devient folle.

  10. #10
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 93
    Points : 60
    Points
    60
    Par défaut
    J'ai pas très bien compris ce que t'as voulu dire emmanuel.remy.
    Quoi qu'il en soit j'ai un même champ hidden dans toutes mes jsp avec des valeurs différentes d'une jsp à l'autre.
    Y a t il moyen de m'en servir ? si oui, comment ? Merci

  11. #11
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Si tu ajoutes un paramètre unique dans l'url lors de l'appel de ta jsp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://...../test.jsp?uniq=1562324
    La fois suivante tu appelles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://...../test.jsp?uniq=7897548
    Ainsi tes urls sont différentes et elles s'ajouteront au cache.

    Si j'ai bien compris le problème que tu rencontre...

    ERE
    Quand une tête pense seule, elle devient folle.

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 265
    Points : 284
    Points
    284
    Par défaut
    Tu peux ajouter un parametre contenant le code de la page courant en session. Tu teste ce parametre pour savoir d'ou tu viens et le tour est joue.

  13. #13
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 93
    Points : 60
    Points
    60
    Par défaut
    Merci à tous

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

Discussions similaires

  1. Retour en arrière en affichant les données de l'ancienne page
    Par loic20h28 dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 06/04/2010, 20h02
  2. redirection vers la page precedente sans perte de données
    Par EIN-LESER dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 20/01/2009, 15h09
  3. Réponses: 1
    Dernier message: 04/06/2008, 17h00
  4. BBCode sans afficher les balises [b], [u], ...
    Par xenos dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/12/2007, 19h01
  5. [html] Modifier du texte (sans afficher les balises)
    Par Alexino2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 25/07/2006, 16h43

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