Comment rafraîchir une liste déroulante alimentée par ajax à partir d'une fenêtr
cousinlol
Messages postés59Date d'inscriptionmercredi 21 juin 2006StatutMembreDernière intervention26 octobre 2015
-
10 mars 2007 à 13:23
cousinlol
Messages postés59Date d'inscriptionmercredi 21 juin 2006StatutMembreDernière intervention26 octobre 2015
-
10 mars 2007 à 21:25
Bonjour,
Dans un formulaire, je choisi une famille de produit, puis (grâce à
ajax) la liste des produits correspondant à cette famille apparaît.
Tout cela fonctionne très bien.
Je viens de placer sur mon formulaire un bouton permettant d'ajouter un
produit à une famille. Ce bouton ouvre une fenêtre dans laquelle je
crée mon produit dans la famille qui va bien.
Je ferme ma fenêtre sans raffraîchir la fenêtre appelante.
Je vais dans la liste des produit de la famille et je ne vois pas le produit ajouté.
Pour le voir, il faut que je change de famille, puis que je revienne sur la famille du début et là je vois mon produit.
Mon problème est que effectivement le ONCHANGE placé sur le choix de la famille, n'est réactivé que si je change de famille.
Comment faire pour qu'au retour de ma fenêtre d'ajout de produit celui-ci soit visible dans le programme appelant.
Je pensais utiliser sur la fenêtre fille "onbeforeunload" dans le body qui exécuterait systématiquement une fonction.
Cette fonction doit reprendre sur la mère le code famille de produit et exécuter mon ajax de rechargement des produits.
Merci d'avance
A voir également:
Comment rafraîchir une liste déroulante alimentée par ajax à partir d'une fenêtr
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 10 mars 2007 à 13:44
Bonjour,
si j'ai compris : simuler le onchange ?
dans la "mère", un truc du genre :
<select id= "toto" ... onchange="fonction_js(this);"....
dans la fille :
pourquoi pas utiliser onbeforeunload, effectivement...
...onbeforeunload="window.opener.fonction_js(window.opener.document.getElementById('toto');"...
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 10 mars 2007 à 16:11
d'abord ...
window.opener.goProduits(window.opener.document.getElementById('type_famille'), document.getElementById('produit').id);
peut-être il faut :
window.opener.goProduits(window.opener.document.getElementById('type_famille'),
window.opener.document.getElementById('produit').id);
mais tout dépend où est cet objet à l'ID "produit"...
sinon, quoi que fait newShowModalDialog ?
ça ressemble à l'appel d'une pop-up, mais avec showmodaldialog "au nom",
exclusif IE, mais surtout qui n'a pas le "window.opener", faut procéder autrement.
et quoi que c'est goProduits... mais là ça ne devrait pas poser de problème...
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 10 mars 2007 à 16:18
on s'est croisé....
et finalement :
window.opener.goProduits( window.opener.document.getElementById('type_famille'),
window.opener.document.getElementById('produit').id);
si l'erreur est bien sur cette ligne ( et pas dans goProduits ), c'est que, dans la page mère,
aucun objet avec id="produit" n'existe. ( ou alors qu'une erreur préalable "détruit" et
fait que cet id n'est pas )
cousinlol
Messages postés59Date d'inscriptionmercredi 21 juin 2006StatutMembreDernière intervention26 octobre 2015 10 mars 2007 à 16:47
Voila ce qui se passe.
Sur le formulaire parent
Je choisi un type de famille, il m'affiche la liste des produits.
Je clique sur mon bouton pour ajouter un produit, la fenêtre fille s'affiche. je crée le produit, je valide et je revient sur mon formulaire parent et la liste des produits à disparu.
il se passe donc quelque chose qui le fait réagir.
cousinlol
Messages postés59Date d'inscriptionmercredi 21 juin 2006StatutMembreDernière intervention26 octobre 2015 10 mars 2007 à 17:21
J'ai placé des "alert" pour suivre mes valeurs :
Mes valeurs sont les mêmes à l'aller et au retour.
Je ne perds plus au retour l'affichage de la liste des produits. Il exécute "goProduits" puisque j'ai mes alert qui s'affiche avec les bonnes valeurs, mais sans raffraîchir la liste des produits.
Je passe bien au retour de la fille dans ce programme et avec les bons paramètres, j'ai testé. J'ai même placé un "mysql_num_rows" pour connaître le nombre d'enregistrements lu.
J'ai pris un exemple avec une famille et un produit. La 1ère fois, j'ai bien 1 produit dans ma liste. je clique pour en ajouter 1. Dans la fenêtre fille je valide l'ajout d'un produit, je reviens à la fenêtre parent et je n'ai toujour qu'un produit.
Pour être sûr que la lecture se passait bien, j'ai fait le test suivant. Sur la fenêtre fille, avant de valider, je suis allé dans phpMyAdmin et j'ai changé le libellé du produit existant. Comme cela si le libellé du produit existant change au retour de la fenêtre fille, c'est que la lecture et le raffraichissement se fait bien.
J'ai ensuite validé la fenêtre fille et au retour sur la fenêtre parent, j'ai bien eu mon libellé du produit existant qui a été modifié, mais je n'ai pas eu l'affichage dans la liste du nouveau produit. Et le nombre d'enregistrements lu est resté à 1.