Carnet Wiki

Environnement d’une noisette ajax

Version 2 — Avril 2020 JLuc

Lorsqu’on les inclue, les inclusions ajax bénéficient du contexte passé en argument de l’inclusion :
les arguments explicites + l’environnement du contexte via ’env’.

La doc recommande aussi de toujours passer ’env’.

Souvent ensuite le rechargement ajax se fait avec un href basé sur #SELF
(cf https://www.spip.net/fr_article3753.html ou https://programmer.spip.net/Liens-AJAX)
mais potentiellement les variables de la query de #SELF sont totalement différentes de celles du contexte incluant la noisette ajax : noms de variables différents, ou valeurs différentes.

Par exemple, sur une page article on peut avoir une noisette ajax qui présente la météo du jour dont le n° dans l’année est indiqué par un champ extra de cet article.
(juste un exemple...)

Attention : lors du chargement ajax après clic, la noisette reçoit en contexte
-  à la fois (prioritairement) les variables d’url de #SELF, complétées des éventuels parametre_url,
-  ET les variables du contexte d’inclusion initial de la noisette telles qu’elles se présentent lors du calcul de la page initiale incluant la noisette (du moins celles qui ne sont pas écrasées par les variables du #SELF).

D’une certaine manière l’url du lien ajax ne sert QUE pour ses arguments d’url puisque les squelettes de cette page, qui calculent et préparent le contexte d’appel de l’inclusion ajax ne sont pas mis à contribution lors du clic d’un lien ajax.

Ça ne pose pas souvent problème, mais ça en pose dans les cas où la valeur d’un contexte est calculée... et où il va donc falloir faire autrement pour que ces calculs soient refaits
et ne soient pas écrasés au clic ajax.

La magie n’est pas totale, et c’est au concepteur de squelette de gérer ces cas spécifiques, par exemple en faisant le calcul du contexte dans la noisette ajax elle-même, en fonction des arguments de l’url+env.

==== cet article est issu d’un message posé sur spip-dev le 26/01/2020 et confirmé le jour même