transmission de données entre pages générées par script

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

transmission de données entre pages générées par script

Messagepar _ledude_ » 16 Déc 2003 à 10:24

Bonjour,dans un site intranet, plusieures de mes pages sont générées par des scripts.Notamment, dans une page affichant les résultats d'une recherche, un lien me permet de lancer un autre agent qui lui aussi me génére une page.Mon problème provient de la transmission de données entre les deux pages.Pour l'instant je passe tous mes paramètres dans l'url et les récupère grâce à Query_String dans le 2eme agent.Mais celà ne fonctionne pas tout le temps. En effet, par moment, pê quand la chaine des paramètres est trop longue, la chaine Query_String récupérée est vide et du coup je n'ai plus accès à mes paramètres.J'ai essayé de placer les valeurs désirées dans des champs <input type="hidden" name="MonChamp" value="MaValeur"> mais je n'arrive pas à récupérer la valeur de ces champs.Quelqu'un a t il une solution?MerciLeDude
_ledude_
 

Re: transmission de données entre pages générées par script

Messagepar phil » 17 Déc 2003 à 10:15

Salut.De ma petite expérience (y'a que qq mois que Droad m'a indiqué qu'on pouvait appeler un agentcomme un pgm CGI pour valider un formulaire) voilà ce que je peux donner comme infos :je m'esscuzze pour "l'académisme" mais si ça peut faire gagner du temps à ceux qui -comme moi- ont cherché cherchent et chercheront (p..elle est bonne celle là, 'faut que je m'en souvienne pour la replacer...) j'apprécieles explications claires sur ce forum, alors je rends la pareille...Lorsqu'un agent est appelée via une URL : <a href='http://MonServeur/Mabase.nsf/MonAgent?OpenAgent&parm1=joyeux&parm2=noël'>Cliquer ici</a> on récupère les infos dans le champ Query_String du document contextLorsqu'un agent est appelé via un formulaire : <form method='post' action='http://MonServeur/Mabase.nsf/MonAgent?OpenAgent'> avec des <input type text name='nom'> <input type text name='prenom'> etc... on récupère les infos dans le champ Request_content du document context(...)dim dCont as Notesdocumentset dCont = Session.DocumentContextet on peux -par exemple- afficher les données pour voir leur troncheprint "<p align=center>" + dCont.Request_string(0) + "</p>" ' données passées en paramètres...print "<p align=center>" + dCont.Request_content(0) + "</p>" ' données transmises en formulaire...nb : ne pas oublier le "hello world" ;))et là... on découvres que certains caractères sont transformés : ç é è ä etc... "joyeux noël" devient "joyeux%20no%EBl"COMMENT S'EN SORTIR ?????La suite demain dans l'épisode "For..Next contre Len(dCont.Request_content(0)" là j'ai plus le temps, je vous file demain mon code* pour extraire tout ça.* y'a sûrement plus rusé et plus compact, mais n'importe qui peut compendre et mainteniret s'en faire un à soi...
phil
 

Re: transmission de données entre pages générées par script

Messagepar _ledude_ » 17 Déc 2003 à 11:17

C'est exactement là où j'en suis!!J'ai envoyé les paramètres que je veux récupérer par l'intermédiaire d'un formulaire, hop doc.Request_Content(0) me récupère les valeurs .... codées!j'étais en train de chercher s'il n'y avait pas un moyen de décoder celà facilement, voir de le coder avant l'envoi si c'est plus facile (mélange de Asc(x) et Chr(x))...Merci pour ta réponse, je vois que je suis sur le bon chemin!!A demain pour la suite ...
_ledude_
 

ouf, j'en suis venu à bout!!

Messagepar _ledude_ » 17 Déc 2003 à 15:16

il y avait pê plus simple mais voici ma solution :premier script :la page générée contient un formulaire spécial qui stocke les valeurs des différents paramètres (<input type=hidden name="param1" value="val1">)Ces valeures sont codées à la génération de la page grâce à la fonction Asc(x).Deuxième script (appelé par le premier) : doc.Request_Content(0) me permet de récupérer tous mes paramètres. Je décode ensuite la valeur de chaque paramètre séparément grâce à la fonction Chr(x).j'utilise donc trois fonctions : Function codage(chaine As String) As String Dim strChaine As String Dim k As Integer For k = 1 To Len(chaine) If k=1 Then strChaine = Asc(Mid(chaine, k, 1)) Else strChaine = strChaine & "-" & Asc(Mid(chaine, k, 1)) End If Next codage = strChaineEnd FunctionFunction decodage(chaine As String) As String Dim pos As Integer Dim pos1 As Integer Dim strMot As String pos = Instr(chaine, "-") If pos <> 0 Then strMot = Chr(Mid(chaine, 1, pos-1)) End If pos1 = pos While Instr(pos+1, chaine, "-") <> 0 pos1 = Instr(pos+1, chaine, "-") strMot = strMot & Chr(Mid(chaine, pos+1, pos1-pos-1)) pos = pos1 Wend strMot = strMot & Chr(Mid(chaine, pos+1, Len(chaine)-pos)) decodage = strMotExit FunctionFunction GetUrlParameter(QueryString As String , ParamName As String) As String Dim pos%, pos2% pos% = Instr(QueryString , "&" & ParamName & "=") If pos% = 0 Then GetUrlParameter = "-Undefined in URL-" Exit Function End If pos2% = Instr(pos% + 1 , QueryString , "&") If pos2% = 0 Then GetUrlParameter = Mid$(QueryString , pos% + Len(ParamName) + 2) Else GetUrlParameter = Mid$(QueryString , pos% + Len(ParamName) + 2 , pos2% - pos% - Len(ParamName) - 2) End IfEnd Function
_ledude_
 

Re: transmission de données entre pages générées par script

Messagepar Cedric » 22 Déc 2003 à 11:37

si j'ai bonne mémoire les URLs sont limitées en taille à 1024 caractères.Je ne me souviens plus de l'origine de cette limite:- Domino ? Quelle version ?- IE ? Quelle version ?- Netscape ? Quelle version ?Enfin, quand on doit faire un dev web non ciblé c'est toujours le plus petit dénominateur qu'il faut prendre en compte :(Au lieu de passer par une URL pour passer des paramètres, rien ne t'empêche effectivement de passer par un FORM et de faire un POST, dans ce cas il n'y a aucune limite (raisonnable).
Cedric
 


Retour vers Développement

cron