Le 28/12/2020 à 14:51, lebardix a écrit :
> J'utilise le plugin Notation pour noter des Images de document
> Chaque article ne comprend qu'une image et appelle le plugin notation
> avec le formulaire #FORMULAIRE_NOTATION
> Ensuite dans une boucle, j'affiche l'ensemble des images des articles
> de cette rubrique et j'affiche la note décernée à chacune des
> images (donc y compris l'image sélectionnée pour le vote).
>
> Je souhaiterai que lorsqu'un vote est décerné à l'image de l'article
> présent, l'affichage de la boucle de l'ensemble des images soit mis à
> jour.
> Pour que la mise à jour apparaisse, je dois aujourd'hui recharger la
> page
> Ajax est-il mon ami ? et comment
Tu peux enlever ajax sur les notations :
comme ça le vote rechargera toute la page.
Pour garder ajax sur les notations, il faut recharger le bloc du portfolio en plus.
Pour ça il faut appeler ajaxReload.
Justement je lisais dans les archives cet échange que j'ai consigné et que je reproduis.
C'est pas forcément exactement ce dont tu as besoin mais ça peut être utile.
Charlss :
J'aimerais qu'après validation d'un formulaire, un autre bloc ajax soit
également rechargé.
Le formulaire est dans une div avec la classe ajax, après validation il
est censé se recharger en ajax.
C'est le comportement par défaut, de ce côté à pas de problème.
Mais en l'occurence je souhaite également un rechargement ajax d'un
autre bloc *après* que le formulaire se soit rechargé.
En mettant un onclick="ajaxReload('mon_bloc')" directement sur le
bouton de validation ça a l'air de fonctionner : le formulaire et l'autre
bloc se rechargent bien tous les 2, mais mais je préférerais que
le rechargement se fasse à la fin des traitements du formulaire, et non
au moment où on appuie sur le bouton.
Si je mets le code suivant à la fin de la fonction traiter :
$res['redirect'] = 'javascript:ajaxReload("mon_bloc");';
Ca recharge effectivement le bloc ajax indiqué, mais le formulaire ne
parviens plus à se recharger.
Je fais en sorte que mon formulaire reste éditable après validation
($res['editable'] = true;),
donc je ne peux pas faire le rechargement en me basant sur le distinction
éditable/pas éditable.
Cela dit je viens de voir une variable 'je_suis_poste' en jetant un coup
d'oeil dans #ENV, il y a peut-être moyen de m'en servir pour obtenir le
même resultat.
Finalement, j'utilise une solution proche du [(#ENV{editable}|oui) ... ]
: après validation d'un formulaire une variable 'je_suis_poste' est
automatiquement transmise, donc :
<BOUCLE_ajaxreload(CONDITION){si
#ENV{_pipelines/formulaire_fond/je_suis_poste}|oui}>
<script type="text/javascript">
/*<![CDATA[*/
jQuery(document).ready(function($) {
ajaxReload('mon_bloc'});
/*]]>*/
</script>
</BOUCLE_ajaxreload>
(https://spip.rezo.narkive.com/QauFC4EP/ajaxreload-apres-validation-d-un-formulaire)
JL