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 :

Une form qui submit mal


Sujet :

JavaScript

  1. #1
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 100
    Points : 80
    Points
    80
    Par défaut Une form qui submit mal
    Bonjour à tous,

    j'ai une application Java qui gère des tables Oracle.
    Mon appli contient des JSP dans lesquelles s'effectue l'affichage des tables mais aussi l'action à des actions (modifier, supprimer, ajouter, etc...)

    Pour utiliser chacune de ces fonctions j'ai la possibilité de sélectionner les lignes concernées (supprimer, modifier). Et dans le cas de la modif, je veux effectuer un controle, à savoir qu'une seule ligne soit choisie avant de rediriger vers la servlet de modification. Jusque là, aucun problème!

    Mais je n'arrive pas à rediriger vers la servlet...
    Je reçois bien les infos de la ligne que je sélectionne (je le vois dans le log de mon serveur + alert()), je vois aussi que les données transit vers la page. Mais celle ci ne s'affiche pas.

    De plus, j'ai essayé 2 choses.
    1) associer la fonction JS à une image (souhaité)
    2) associer la fonction JS à un bouton (pas terrible...)

    Avec l'image, je reste sur la page appelante.
    Avec le bouton, j'accède à une page blanche mais à la bonne URL (je gère parfaitement les servlets, elles fonctionnent au top, c'est certain).

    Pour mieux me faire comprendre voici les éléments :

    la JSP :

    Code JSP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    		<input type="image" src="../img/update.bmp" alt="update" value="submit"	onClick="checkUpdate('modifFormBankParameters');"> 
    		<input type="button" value="Modif"  onClick="checkUpdate('modifFormBankParameters')"/>

    la fonction JS :

    Code JAVASCRIPT : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    function checkUpdate(pAction) {
    	// les lignes de ma tables précédées d'une checkbox
    	var theForm = document.forms['mainForm'].elements['check'];
    	var form = document.createElement("form");
    	var i = 0;
    	var j = 0;
    	var val;
     
    // parcours des checkbox pour compter le nombre de sélections
    	for(i=0; i<theForm.length; i++){
    		if(theForm[i].checked){
    			j++;
    récupérer la valeur de la ligne
    			val = theForm[i].value;
    		}
    	}
    	// affichage du nombre de sélection + valeur : ça marche au top
    	alert(j);
    	alert(val);
     
    // si 0 sélection, ne rien faire
    	if(j == 0){
    	}
    // plusieurs, pas bon
    	else if(j > 1){
    		alert("Select just 1 please");
    	}
    // sinon on fait le redirection vers la servlet entrée en paramètres
    	else{
    		document.body.appendChild(form);
    		form.method="POST";
    		form.action=pAction;
    		var hiddenField = document.createElement("input");
    		hiddenField.name="formidable";
    		hiddenField.type="hidden";
    		hiddenField.value=val;
    		form.appendChild(hiddenField);
    		form.submit();
    	}
     
    }


    la servlet :

    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String req = request.getParameter("formidable");
    // affichage de la valeur envoyée par la form de la fonction : ça marche au top
    System.out.println(reqTemp);
     
    // écrire sur la page lue par le navigateur
    PrintWriter out = response.getWriter() ;
    out.write("<p>"+req+"</p>");


    Merci de votre aide, je pète un plomb depuis des heures, je sais que maintenant je n'ai meme plus le bon recul pour réfléchir

    Bonne soirée, Pierre

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    un bouton image equivaut à un bouton submit... sur le onclick si tu ne fais pas de return false ton form est envoyé
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  3. #3
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 100
    Points : 80
    Points
    80
    Par défaut
    Bonjour,

    merci SpaceFrog pour ta réponse.

    Citation Envoyé par SpaceFrog Voir le message
    un bouton image equivaut à un bouton submit...
    Le comportement de ces 2 input, avec le code associé, est sensiblement différent. avec le bouton image, je ne bouge pas de la page. contrairement au bouton submit qui m'envoie malgré les erreurs sur la servlet.

    Citation Envoyé par SpaceFrog Voir le message
    sur le onclick si tu ne fais pas de return false ton form est envoyé
    donc tu me dis que mon code qui ne présente pas de return false devraitm'envoyer correctement à la servlet. je jette un coup d'oeil frais à tout ça maintenant

  4. #4
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par pierrotparma Voir le message
    contrairement au bouton submit qui m'envoie malgré les erreurs sur la servlet.
    mais il ne s'agit pas d'un bouton submit.
    Il s'agit ici d'un type="button" et non type="submit"
    donc tu me dis que mon code qui ne présente pas de return false devraitm'envoyer correctement à la servlet.
    Je ne crois pas
    Plutôt que tu devrais ajouter le return false afin que le form ne soit pas envoyé et que seule ta fonction soit exécutée.
    Bref, comme pour la solution que tu ne trouves "pas terrible" mais qui semble pourtant la plus logique (pourquoi gérer un form s'il n'est jamais envoyé ?)

    A confirmer par SpaceFrog ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 100
    Points : 80
    Points
    80
    Par défaut
    En fait, je veux utiliser une image.
    je me suis servi d'un bouton (et non d'un type submit, effectivement) pour m'assurer du fonctionnement de ma fonction.

    je ne suis pas sur d'avoir bien bien compris vos conseils, en fait.

    j'ai ajouté des return false dans les 2 cas qui ne m'intéressent pas:
    - 0 sélection
    - > 1 sélection

    et lorsque je les teste, pas de soucis, je reste bien sur la page appelante et en plus je conserve la sélection.

    j'ai ajouté un return true dans le cas qui m'intéresse, à savoir 1 sélection de checkbox.

    j'ai changé le onClick avec :

    Code JSP : Sélectionner tout - Visualiser dans une fenêtre à part
    onClick="return checkUpdate('modifFormBankParameters');"

    Mais je ne parviens toujours pas à envoyer la donnée correspondante à ma servlet.

    Code JAVASCRIPT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    document.body.appendChild(form);
    form.method="POST";
    form.action=pAction; // l'adresse de la servlet
    var hiddenField = document.createElement("input");
    hiddenField.name="formidable";
    hiddenField.type="hidden";
    hiddenField.value=val; // valeur de la sélection
    form.appendChild(hiddenField);
    form.submit();
    return true;

    je ne comprends pas pourquoi cette partie de la fonction ne me redirige pas sur la servlet.

  6. #6
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 100
    Points : 80
    Points
    80
    Par défaut
    Alors je viens de décanter quelque chose.
    intéressant d'ailleurs.

    je viens de corriger un bug dans un de mes traitements et je m'aperçois qu'avec le input de type bouton, je parviens parfaitement à la page que je souhaite.

    alors qu'avec le input de type image, je n'ai aucune redirection.

    Code JSP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input type="image" src="../img/update.bmp" alt="update" value="submit"	onClick="return checkUpdate('modifFormBankParameters');"> 
    <input type="button" value="Modif"  onClick="return checkUpdate('modifFormBankParameters')"/>

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    function checkUpdate(pAction) {
     
    	var theForm = document.forms['mainForm'].elements['check'];
    	var form = document.createElement("form");
    	document.body.appendChild(form);
    	form.method="POST";
    	form.action=pAction;
    	var hiddenField = document.createElement("input");
    	hiddenField.name="formidable";
    	hiddenField.type="hidden";
    	var i = 0;
    	var j = 0;
    	var val;
     
    	for(i=0; i<theForm.length; i++){
    		if(theForm[i].checked){
    			j++;
    			val = theForm[i].value;
    		}
    	}
     
    	alert(j);
    	alert(val);
     
    	hiddenField.value=val;
    	form.appendChild(hiddenField);
     
    	if(j == 0){
    		return false;
    	}
    	else if(j > 1){
    		alert("Select just 1 please");
    		return false;
    	}
    	else{
     
    		form.submit();
    		return true;
    	}
     
    }

    donc maintenant il me reste à savoir quoi changer pour qu'un bouton image soit l'équivalent d'un bouton submit.

    merci de votre aide!

  7. #7
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par pierrotparma Voir le message
    donc maintenant il me reste à savoir quoi changer
    A priori
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img name="Modif" src="url_image.jpg" onclick="checkUpdate('modifFormBankParameters')"/>
    Citation Envoyé par pierrotparma Voir le message
    pour qu'un bouton image soit l'équivalent d'un bouton submit.
    d'un bouton tout court (type="button")

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  8. #8
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 100
    Points : 80
    Points
    80
    Par défaut
    oui, pardon.
    obtenir de mon input image l'équivalent de mon input button

    je viens d'essayer de rajouter un lien vers l'image, aucun effet.
    c'est quand meme bizarre que cela change du tout pour le tout

    je vois dans le log de mon serveur en plus, qu'il accède à la servlet
    mais il ne m'en fait ni la redirection ni l'affichage

  9. #9
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par pierrotparma Voir le message
    je viens d'essayer de rajouter un lien vers l'image, aucun effet.
    Je comprends pas trop, là

    On peut voir ce code ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  10. #10
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 100
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    A priori
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img name="Modif" src="url_image.jpg" onclick="checkUpdate('modifFormBankParameters')"/>
    j'ai donc tenté:

    Code JSP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="button" value="Modif" src="../img/update.bmp" onClick="return checkUpdate('modifFormBankParameters')"/>

    Code JSP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input value="Modif" src="../img/update.bmp" onClick="return checkUpdate('modifFormBankParameters')"/>

    Code JSP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input value="Modif" src="../img/update.bmp" onClick="checkUpdate('modifFormBankParameters')"/>

  11. #11
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par pierrotparma Voir le message
    j'ai donc tenté


    Et un copie/collé ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  12. #12
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 100
    Points : 80
    Points
    80
    Par défaut
    ah ah la tete en l'air!!

    effectivement, un copier coller marche beaucoup mieux

    et désomais ça fonctionne! je m'étais enteté avec mes inputs
    un très grand merci à toi E.Bzz
    tu as été patient, merci!

    C'est donc un problème résolu!!

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

Discussions similaires

  1. trajectoire d'une forme qui ne fonctionne pas
    Par kaya 59 dans le forum VBA PowerPoint
    Réponses: 13
    Dernier message: 02/08/2008, 10h27
  2. Imprimer une form qui dépasse l'écran Scrollbar
    Par TrollTop dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 26/10/2007, 12h49
  3. Comment afficher une form qui a été réduite?
    Par Mickey.jet dans le forum Delphi
    Réponses: 6
    Dernier message: 12/08/2006, 09h39
  4. Une Form qui retourne une valeur?
    Par say dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/02/2006, 10h05
  5. [SQL] une requete qui fait mal a la tete
    Par MailOut dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/02/2005, 16h22

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