IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Transmission variables javascript asp.net


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut Transmission variables javascript asp.net
    Bonjour,
    Lors d'un double clique sur une ligne d'une grille j'entre dans une fonction js qui me transmet les données de cette ligne dans l'url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.location.href="AssistantFinOperation.aspx?debut="+values[0]....
    Probleme : mes variables peuvent contenir des caractères qui posent problèmes (# par exemple).
    J'aimerais donc pouvoir récupèrer (sauvegarder) ces données autrement.

    Avez vous une idée?

    Merci de votre aide

  2. #2
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    Pense a l'encodage Html de tes valeurs que tu fais transiter.. cela devrait resoudre tes soucis.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    Qu'est ce que tu entends par l'encodage html?

    Je vois pas tres bien concrétement ce qu'il faut faire :/

  4. #4
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    OK merci.

    Petite question : quelle est la difference entre un Request.QueryString["var"] et un Request.Params["var"]?

  6. #6
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    je crois que le querystring implique que tu recuperes tes données depuis un get exclusivement alors que le second les prendra qu'elles viennent de get ou de post. Mais à confirmer...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    bon j'ai fait dans mon lien depuis ma fontion js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    encodeURIComponent("AssistantFinOperation.aspx?debut="+values[0]....
    Puis je recupere dans mon code behind :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debut.Text = Server.UrlDecode(Request.QueryString["debut"]);
    Mon url est : AssistantFinOperation.aspx?debut=BCR#

    Et je recupére dans mon champ texte : BCR :/

    (j'ai essayé aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.location.href=UrlEncode("AssistantFinOperation.aspx?debut="+values[0]....
    qui ne fait pas d'erreur mais ne me permet pas non plus de recuperer mon diese).

  8. #8
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    Effectivement, j'etais persuadé que le diese etait géré par cette fonction. Bon le mieux que tu as à faire alors est de le gérer a la main en le replacant par "diese " par exemple.

    Mais il est vrai que placer des # dans une url sans que cela soit des ancres, c'est tout de même un peu retors, n'est ce pas?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    ouai mais comment le faire passer autrement?

  10. #10
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    Request.QueryString ne te renvoie que les variables qui sont définits dans l'url tandis que Request.params te renvoi toutes les variables utilisées dans l'objet request (viewstate,...)

  11. #11
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    En lui donnant un code que ton application saura decrypter. Tu fais un truc du style :

    dans la page qui cree le lien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mastring.replace("#","diese");

    dans la page qui recoit et decrypte le lien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mastring.replace("diese","#");
    Si tu utilises 3.5 tu peux meme faire une petite fonction d'extension pour l'avoir toujours sous la main. Maintenant, il est vrai que cela fait assez bricolage, mais cela aura le mérite de fonctionnner.

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 217
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par Arthis Voir le message
    En lui donnant un code que ton application saura decrypter. Tu fais un truc du style :

    dans la page qui cree le lien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mastring.replace("#","diese");

    dans la page qui recoit et decrypte le lien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mastring.replace("diese","#");
    [...]
    C'est en effet la bonne technique à employer.

    J'ajouterais, pour la compréhension, ce qui est la source de votre problème initial :

    grossierement, une URL/URI pour le protocole HTTP a cette forme, du moins en syntaxe d'URL/URI absolue :

    http://hote[:port]/chemin[?param1=val1&param2=val2&...][#fragment]

    (cf. RFC 2616 -- http://www.ietf.org/rfc/rfc2616.txt )

    où :

    * "port" est optionnel, comme vous savez

    * "chemin" peut être vide

    * "param1=val1&param2=val2&..." sont optionnels, eux aussi

    Mais l'hote serveur HTTP ne "voit" (via QueryString en ASP.NET p.ex, mais c'est valable aussi pour PHP, CGI, etc) que la partie de la syntaxe située avant ce qu'on appelle "le fragment" ( le "#fragment" ) ; car en effet, ce "fragment" est une information "out-of-band" conçue dans la RFC 2616 pour etre a destination du client (p.ex navigateur) HTTP de l'application.

    En effet, la partie de la syntaxe URL/URI avant le "#" désigne ou identifie la ressource et seulement la ressource (p.ex le HTML reçu par le client) ; tandis qu'après le "#", l'ID de fragment, en option, est quant à lui l'information "out-of-band" transmise pour demander au client HTTP d'interpreter (ou de se "concentrer sur" ) seulement une partie de cette ressource ; ce que font typiquement les navigateurs en scrollant vers le bas, p.ex, vers "l'ancre" directement après le rendu HTML, pour se positionner tout de suite sur le "bon" paragraphe.

    Pour d'autres applications HTTP, où les flux sont XML p.ex, sans etre a destination d'humains, ce fragment peut être utilisé pour indiquer au client de ne s'interesser qu'a un noeud (élément) particulier du document XML ( "<dictionary>...<word id="wrath">...</word>...</dictionary>" => URL du genre http://.../dictionary/english#wrath )

    [ EDIT ]

    En clair, votre application ASP.NET, côté serveur, "en fait un peu trop" et tente d'exploiter une information, qui, par conception du protocole HTTP, en l'espèce concernant la syntaxe des URLs/URIs, ne lui est pas destinée, puisque normalement destinée au client (le navigateur).

    Ce n'est pas dramatique / ridicule en soit (car après tout, HTTP fut initialement conçu pour transporter du HTML, mais on lui a trouvé bien d'autres usages depuis son invention fin des 80's...) mais c'est tout de même une enfreinte à ses objectifs de conception et d'utilisation que vous devez avoir à l'esprit dans votre cas particulier.

    Par là, je veux dire : ce que vous mettez après le "#" ( une information technique ou métier ) ne pourriez vous pas le mettre avec le reste des paramètres introduit par "?" à destination de la page aspx, en étant plus conforme au rôle joué par le serveur, donc ?

    'HTH

  13. #13
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    Oua c'est une chouette réponse cá. si apres il y a des questions, je veux bien refuser tous mes cadeaux de noel ce soir!

    D'ailleurs Joyeux noel a tout le monde!!

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 217
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par Arthis Voir le message
    Oua c'est une chouette réponse cá. si apres il y a des questions, je veux bien refuser tous mes cadeaux de noel ce soir!

    D'ailleurs Joyeux noel a tout le monde!!
    Merci pour le compliment indirect...

    Mais bon, on va dire que vous blaguez : je n'aimerais pas savoir que vous avez refusé vos cadeaux du papa noel a cause d'une autre question sur ce fil par un rebond sur nos réponses... ce serait triste !

    Et oui, joyeux noel a tous, au fait !

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/01/2010, 17h28
  2. Réponses: 3
    Dernier message: 23/07/2009, 10h38
  3. Transmission variable javascript
    Par arnogef dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 31/05/2007, 12h02
  4. variable Session(asp.net) et Cookie dans Flash
    Par SirTurbo dans le forum Flash
    Réponses: 4
    Dernier message: 29/05/2007, 04h27
  5. simuler un clic javascript/asp.net
    Par rsfav dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/08/2006, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo