Formulaire_editer_mot et ajax redirection

Bonjour,

Est-il possible d’empêcher la redirection après le traitement d’un formulaire (édition mot) ? Je voudrais éviter que ma page se recharge. J’ai bien essayé de ne rien renseigner de le champ « retour » mais rien n’y fait. Mon code ci-dessous est bien placé dans un INCLURE… avec l’argument {ajax}.

[(#FORMULAIRE_EDITER_MOT{new,#ID_GROUPE,#SELF,article|#ID_ARTICLE})]

Ma seconde question, comment je fais ensuite avec ajaxReload, après le traitement du formulaire, pour actualiser ma liste de mot dans un second bloc ? J’ai bien crée un autre INCLURE… avec {ajax=liste_mot} mais j’ignore comment agir sur celui-ci.

Merci d’avance pour votre aide !

Essaye plutôt avec #SLEF en valeur de retour.

Pour ça, il faut envoyer un bout de js qui fait l’ajaxreload dans le message de retour du formulaire, comme ici par exemple medias/editer_document.php at 97e9e558b98e4402a158d925d14e0472c2927992 - medias - SPIP on GIT

Merci beaucoup ta réponse.

Le #SELF ne résout rien. En faite, il me rajoute l’argument id_lien_ajoute dans l’URL.

Pour le morceau de JS, je l’intègre directement dans le bloc {ajax} ou se trouve mon formulaire ?

<script type="text/javascript">
$(window.jQuery) ajaxReload("liste_mot");
</script>

Merci beaucoup

Non, je disais bien « il faut envoyer un bout de js qui fait l’ajaxreload dans le message de retour du formulaire ». Pour ça, tu peux passer par le pipeline formulaire_traiter par exemple formulaire_traiter - Programmer avec SPIP 4.0

Merci beaucoup. Dans mon duplicata editer_mot.php, j’ai mis en commentaire la redirection avec l’argument id_lien_ajoute. ça ne risque pas de poser problème ? Comme ça il ne me recharge plus la page.

if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
	include_spip('action/editer_mot');
	mot_associer($id_mot, [$objet => $id_objet]);
	if (isset($res['redirect'])) {
		// $res['redirect'] = parametre_url($res['redirect'], 'id_lien_ajoute', $id_mot, '&');
		$res['message_erreur'] .= '<script type="text/javascript">if (window.jQuery) ajaxReload("vue_test");</script>';

	}
}

Si, c’est pour ça que je proposais d’utiliser le pipeline, c’est fait pour ça…