Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/08/2007, 09h31   #1
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
Par défaut récupération du contenu d'un iframe après PartialUpdate

Bonjour

Je fais un SubmitForm dans un iframe vers un XMLService qui fait un Insert. Dans AfterXMLGram, je renvoie la valeur de l'ID correspondant à mon insertion. J'utilise pour cela XMLRequest.SetContent et XMLRequest.SendResponse.
Si je laisse mon iframe visible, je vois bien la valeur de l'ID dans le iframe. Ma question est comment récupérer cette valeur ?
Merci d'avance
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2007, 10h48   #2
Membre confirmé
 
Avatar de Jeweller
 
Inscription : août 2003
Messages : 354
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 354
Points : 226
Points : 226
Bonjour,

Je vois deux directions de solutions possible. En ce qui me concerne je passerais par un appell Ajax, et non du PartialUpdate, ca me parait bien performant et moins "usine à gaz" que du partial update. Tu peux garder donc ton SendResponse et simplement affecter le retour dans un élement du dom html de ta page. L'avantage c'est que tu peux tres simplement faire un sablier ou un gif animé pour faire patienter.... Si tu veux un exemple je peux en faire un ;-)
Autrement, en partial update, au lieu de faire un SetResponse, tu affectes plutot ton ID dans ta grappe XML (assign) de façon à le déposer dans un champ caché par exemple (peu importe, meme dans un div ca va marcher). Et dans lors du partialUpdate tu peux alors affecter la valeur de ton champ ou de ton div (innerHTML) à un champ de ta page principale. C'est plus "simple" si tu n'as jamais fait d'ajax... et aussi plus xmlradien peut etre

Michael
Jeweller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2007, 11h05   #3
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
salut

Je veux bien un petit exemple Ajax.

Pour ta solution PartialUpdate, j'avoue que je ne vois pas trop. En effet, je ne retourne pas un XMXLService qui permettrait d'utiliser la technique classique du PartialUpdate (body onload....)

Merci
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2007, 11h25   #4
Membre confirmé
 
Avatar de Jeweller
 
Inscription : août 2003
Messages : 354
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 354
Points : 226
Points : 226
En ajax ca donnerait un truc comme ca (tu auras besoin de prototype.js):

Tu appelles cette methode (lors d'un clic sur un bouton par exemple, ou un evenement on change):
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
function FormMachin_InsertMesDonnees(param_utiles){
 
    SimpleShow('waitdiv'); //waitdiv contient une gif animée tournante
 
	if ( qqstests utiles ) {
		  SimpleHide('waitdiv');
			  return;
		    }
	new Ajax.Request(XMLC_BaseHRef+'MonXMLService_Insert',	{parameters: $H({'Champ1': $F('champ1'), etc...}
			).toQueryString(),
			onComplete: function(requester) {
		     try{
			   var data = requester.responseText; // ou requester.responseXML si tu retournes une grappe XML à parser avec plusieurs champs
 	                            $('MonNouvelID').value = data;
			}   catch(e){
                       $('MonNouvelID').value= '-1'; }
				SimpleHide('waitdiv');		      
		  } 
		  });   
 
	}
Note: $('champ1') c'est simplement un raccourcis de getElementById('champ1')
F$('Champ1') est un GetValue('champ1')
de meme que $H construit un tableau, le but étant de former la chaine champ1=tot&champ2=tataetc... sans s'embeter

Une bonne pratique est de "binder" les évenements js en dehors du fichiers xsl de façon à bien différencier présentation et regles métiers!!:
Code :
1
2
3
4
5
 
Event.observe('Bouton1', 'click', FormMachin_InsertMesDonnees);
ou
Event.observe('champ1', 'blur', FormMachin_InsertMesDonnees);
etc... ;)
ton MonXMLService_Insert fait donc un simple SendResponse. L'id en retour est ensuite inseré dans un champ MonNouvelID qui peut a sont tour etre posté dans ton formulaire principale si c'est ton besoin.

Concernant le partialUpdate je pensais effectivement à la méthode du body onload, qui fonctionnera aussi.

Michael
Jeweller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2007, 14h26   #5
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
Merci pour cette réponse
ça fonctionne.... presque. En effet, je récupère toujours la même valeur. Je vais poursuivre mon investigation sur le sujet.
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h53.


 
 
 
 
Partenaires

Hébergement Web