HELP ! Envoi de données d'un formulaire dans une nouvelle fenetre

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
zab_paris
Messages : 4
Enregistré le : 13 nov. 2018, 17:25

HELP ! Envoi de données d'un formulaire dans une nouvelle fenetre

Message par zab_paris » 13 nov. 2018, 17:45

Bonjour à toutes et tous

Avant que je jette mon ordi par la fenêtre, je vous appelle à l'aide.
Cela me fiche la honte tellement c'est du javascript de base mais je n'y arrive pas.

Il y a 8 ans j'ai créé un formulaire (simplifié ici : http://www.elisabethmasset.fr/ARCHIVES/commande.htm) qui, une fois validé, ouvrait un pop up reprenant différents éléments du formulaire. J'utilisais la méthode "POST", et j'accédais aux champs du formulaire de la fenêtre appelante par des codes comme ça :
variable1=opener.document.getElementsByName("champ1");
Cela marche toujours très bien, vous pouvez tester en entrant des quantités dans les champs idoines. (et voir le javascript dans le code source du pop up)

Cette année je refais une petite boutique mais présentée différemment.
J'ai procédé exactement de la même façon, en reprenant le formulaire original et en l'adaptant. Le formulaire (ultra simplifié) est là : http://www.elisabethmasset.fr/ARCHIVES/ ... tique2.htm

Lorsqu'on valide le formulaire on active cette fonction :

function valid()
{
nbc=document.getElementsByName("objet_1");
totalc=document.getElementsByName("objet_1_montant");
titre=document.getElementsByName("nom_1");
var donneea=new Number(nbc[0].value);
var donneeb=new Number(totalc[0].value);
var donneec=titre[0].value;
document.write(donneec+", quantité : "+donneea);
document.write("</br>Pour un total de : "+donneeb);

window.open('recap_commandenew.htm',"NewWindow","width=750,height=500,scrollbars=yes");
}

Les lignes avant ouverture du pop up me permettent pour l'instant de vérifier que j'ai bien nommé et manipulé mes variables, et c'est ok.

Dans le pop up, http://www.elisabethmasset.fr/ARCHIVES/ ... ndenew.htm, je reprends ces mêmes lignes, mais en mettent "opener" devant les "document", comme la solution qui marchait il y a 8 ans ! Mais là, ça ne marche pas !!!!

<script language="javascript">

nbc=opener.document.getElementsByName("objet_1");
totalc=opener.document.getElementsByName("objet_1_montant");
titre=opener.document.getElementsByName("nom_1");

var donneea=new Number(nbc[0].value);
var donneeb=new Number(totalc[0].value);
var donneec=titre[0].value;

document.write(donneec+", quantité : "+donneea);
document.write("</br>Pour un total de : "+donneeb);

</script>


MAis qu'est-ce qui se passe ? Pourquoi ça ne marche pas alors que la logique est la même ? Qu'es ce que j'ai loupé ou mal repris ?

Indice : le formulaire initial, ça ne marche qu'en ligne, aucune idée de la raison. POST ou GET, pareil.

Merci de votre aide !!

Zab

Avatar du membre
webmaster
Administrateur du site
Messages : 563
Enregistré le : 28 févr. 2017, 15:19

Re: HELP ! Envoi de données d'un formulaire dans une nouvelle fenetre

Message par webmaster » 14 nov. 2018, 13:36

Bonjour

Il y a une erreur lors du changement d'une quantité dans le formulaire
Je vois dans la console
essaiboutique2.htm:26 Uncaught ReferenceError: calcultotal is not defined
at calcul (essaiboutique2.htm:26)
at HTMLInputElement.onblur (essaiboutique2.htm:87)
calcul @ essaiboutique2.htm:26
onblur @ essaiboutique2.htm:87

A priori, ca doit bloquer tout le reste des traitements
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

zab_paris
Messages : 4
Enregistré le : 13 nov. 2018, 17:25

Re: HELP ! Envoi de données d'un formulaire dans une nouvelle fenetre

Message par zab_paris » 14 nov. 2018, 14:30

Bonjour !

et merci d'avoir regardé.
En effet cette fonction calcul_total était de trop, mais ce n'est pas ça qui bloquait.

La fonction valid écrit bien les résultats dans la page mère (le document.write) mais n'arrive pas à les envoyer à la nouvelle fenêtre recap_commandenew.

Je ne comprends toujours pas pourquoi. Je poursuis mes investigations.

Merci en tous cas

Zab

Avatar du membre
webmaster
Administrateur du site
Messages : 563
Enregistré le : 28 févr. 2017, 15:19

Re: HELP ! Envoi de données d'un formulaire dans une nouvelle fenetre

Message par webmaster » 14 nov. 2018, 15:00

Ok, je comprends le principe
C'est assez particulier, mais pourquoi pas

Quand le popup s'ouvre, il détecte une erreur
recap_commandenew.htm:52 Uncaught TypeError: Cannot read property 'value' of undefined
at recap_commandenew.htm:52
qui correspond à var donneea=new Number(nbc[0].value);
En fait, le formulaire n'existe plus a cause des document.write qui remplace le document

Il faudrait les remplacer par des console.log() pour ne pas interrompre le fonctionnement normal
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

zab_paris
Messages : 4
Enregistré le : 13 nov. 2018, 17:25

Re: HELP ! Envoi de données d'un formulaire dans une nouvelle fenetre

Message par zab_paris » 14 nov. 2018, 15:46

Bon sang je n'en reviens pas, c'était juste ça !
J'avais mis ce document.write (pour vérifier) parce que ça ne marchait pas, et quand je l'enlève, ça marche ???

Merci infiniment pour votre aide, et d’avoir pris le temps de regarder ça.

Pourquoi c'est particulier ? Le pop up récapitule les choix de l'acheteur, et demande ensuite (dans la version complète) ses coordonnées, et le tout m'envoie un mail. je finalise la transaction par mail. Je fais ça car je ne peux pas avoir de stock (on choisit le dessin qui sera utilisé pour des objets personnalisés), parce que c'est plus sympa d'avoir un échange avec l'acheteur, et j'aurai trop peu de clients pour me lancer dans un outil archi élaboré. Mon site étant en spip, j'ai essayé tous les plugins de formulaire et d'e commerce, mais ça demandait trop de travail pour les adapter à mon besoin qui est tout simple.

Je suis néanmoins ouverte aux suggestions. Je reposterai ici quand j'aurai établi la version complète du formulaire.

Merci !

Elisabeth

Avatar du membre
webmaster
Administrateur du site
Messages : 563
Enregistré le : 28 févr. 2017, 15:19

Re: HELP ! Envoi de données d'un formulaire dans une nouvelle fenetre

Message par webmaster » 14 nov. 2018, 15:57

De manière générale, pour voir le contenu d'un élément, il faut utiliser console.log() (voir le tuto ici https://www.toutjavascript.com/savoir/n ... script.php )

C'est particulier car en général, on utilise plutot un langage serveur pour transmettre des informations d'une page à l'autre
Mais cela fonctionne (avec un principe malin) et c'est bien l'essentiel !
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

zab_paris
Messages : 4
Enregistré le : 13 nov. 2018, 17:25

Re: HELP ! Envoi de données d'un formulaire dans une nouvelle fenetre

Message par zab_paris » 14 nov. 2018, 16:05

Ok ! Et merci pour le coup de la console, je n'avais pas repéré ! Comme quoi, on continue à apprendre tous les jours.

Pour mon pop up, en fait, dans la version complète il y a du javascript ET du PhP.

Avatar du membre
webmaster
Administrateur du site
Messages : 563
Enregistré le : 28 févr. 2017, 15:19

Re: HELP ! Envoi de données d'un formulaire dans une nouvelle fenetre

Message par webmaster » 15 nov. 2018, 11:35

Ca serait alors plus facile de récupérer les données du formulaire avec PHP
$_POST est le tableau qui contient tous les champs du formulaire.
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

Répondre