Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Je n'arrive pas à afficher la vue d'un module après submit d'une autre vue

Posted by pheromix on 05/31/2016 18:03

Voici le code du submit de la première vue :

$("#"+id_popup_target).contents().find("form").submit(
	function()
	{
		var options = {
			url : '{/literal}{$zUrlSave}{literal}',
			type:		'POST',
			dataType :	'json',
			success:    function(_oJson)
			{
				var zEtapeSvt = "";
						
				if (zEtape == "session") {
						
					var zEtapeSvt = "phasesession";
							
					$.post(
						"{/literal}{jurl 'accueil~default:paramSession', array()}{literal}",
						{zEtape: zEtapeSvt, sess: _oJson.iSessionId},
						function(data){
							// comment afficher la vue ici ?
						}
					);
							
				}
			}
		};
			
		jQuery(this).ajaxSubmit(options);
			
		return false;
	}
) ;

Donc je veux appeler la methode paramSession du module accueil dans le controleur default avec des paramètres. Mais malheureusement à l'exécution la vue ne s'affiche pas ! Comment résoudre le problème ?

merci beaucoup

  [Opened] Je n'arrive pas à afficher la vue d'un module après submit d'une autre vue

Reply #1 Posted by laurentj on 06/04/2016 13:55

Bonjour,

déjà, faut éviter ce genre de chose :

url : '{/literal}{$zUrlSave}{literal}',

C'est un peu cra cra, et ça oblige à integrer tout le javascript dans le template, plutôt que de le mettre sagement dans un fichier js à part.

Je préconise plutôt de mettre dans ton template, uniquement des déclarations de variables dans lesquelles on met les urls ou autres valeurs de template, et d'inclure (vi addJsLink ou <script>) les fichiers js qui utiliseront ces variables.

Dans le template :

<script>
var urlSubmit = "{$zUrlSave}";
var urlSession = "{jurl 'accueil~default:paramSession', array()}"
</script>

et dans un fichier js chargé normalement par ta page html, il contient le code que tu as montré avec par exemple

var options = {
	url : urlSubmit,
	type:	'POST',
...

Sinon, pour ton problème, c'est un peu bizarre. De ce que j'ai compris, sur le submit d'un formulaire, tu appelles un premier service web, et au retour, tu voudrais rediriger vers une page avec des infos que tu as reçu du service web.

Si le service web en question est dans ton appli, tu pourrais simplement éviter tout ce js est mettre <form action="{$zUrlSave}">, et à la fin du traitement du submit en php, faire une simple redirection vers "accueil~default:paramSession".

Si c'est un service externe et que tu veux que ça revienne sur ton site, il faut faire une redirection en javascript, (location.href=...). En js tu ne peux PAS remplacer la page actuelle en faisant de l'ajax comme tu fais, encore moins en postant des valeurs (et je tiens à préciser que ton souci ici, est un souci purement js/architectural, aucunement lié à Jelix). Donc là, à la place de ton $.post(), il faut faire un location.href (donc l'equivalent d'un get), et inclure tes paramètres zetape et sess dans l'url que tu donne à location.href.

 
Page
  1. Je n'arrive pas à afficher la vue d'un module après submit d'une autre vue