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 :

constante javascript à partir d'un ASHX


Sujet :

ASP.NET

  1. #1
    Membre éprouvé
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Billets dans le blog
    2
    Par défaut constante javascript à partir d'un ASHX
    Bonjour

    J'ai des constantes définies du côté server et j'aimerai les transmettre à mon javascript

    J'ai essayé différentes méthode comme
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script language="javascript" type="text/javascript">
            var filtreUpImg = "?<%=PARAM_FILTRE_UPLOAD %>=IMG";
            var PathImgSoc = "<%= PATH_IMG_SOCIETE%>";
            var ParamIdSoc = "<%= PARAM_IDSOC %>";
            $(function () {
                InitSocietes(filtreUpImg, PathImgSoc, ParamIdSoc);
            });
        </script>
    Mais c'est pas très propre surtout que je n'ai pas fini d'en rajouter

    J'ai eu l'idée de passer par un fichier ashx, j'ai réussi pour 1 variable
    Mon fichier ashx:
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Imports System.Web
    Imports System.Web.Services
     
    Public Class ParamJS
        Implements System.Web.IHttpHandler
     
        Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
     
            context.Response.ContentType = "application/javascript"
            Dim str As String = "var filtreUpImg = '?" & Params.PARAM_FILTRE_UPLOAD & "=IMG';"
            context.Response.Write(str)
     
        End Sub
     
        ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
     
    End Class

    l'appel dans fichier aspx
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
     <script type="text/javascript" src="/Helper/ParamJS.ashx"></script>

    Ce qui me donne accès à ma variable dans toute ma page aspx

    Mais j'ai un souci pour mettre passer plusieurs variables.
    je pense avoir besoin de
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    dim ser As New System.Web.Script.Serialization.JavaScriptSerializer
    Mais j'ai du mal sur la structure à mettre en place
    Pouvez-vous m'aider?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Pas besoin de JavaScriptSerializer, il suffit de passer par un StringBuilder :


    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
     
            context.Response.ContentType = "application/javascript"
            Dim str As New StringBuilder
            str.AppendLine("var filtreUpImg = '?" & Params.PARAM_FILTRE_UPLOAD & "=IMG';")
            str.AppendLine("var autreConstante = '" & Params.AUTRE_CONSTANTE)
            ' etc
            context.Response.Write(str.ToString())
     
        End Sub

    Sinon tu peux aussi écrire directement sur Response.Output :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
     
            context.Response.ContentType = "application/javascript"
            context.Response.Output.WriteLine("var filtreUpImg = '?" & Params.PARAM_FILTRE_UPLOAD & "=IMG';")
            context.Response.Output.WriteLine("var autreConstante = '" & Params.AUTRE_CONSTANTE)
            ' etc
     
        End Sub

    Soit dit en passant, ce serait sans doute plus propre de mettre tes constantes dans un Dictionary et de faire une boucle :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
        Private Constants As New Dictionary(Of String, String)
     
        Public Sub New()
            Constants.Add("filtreUpImg", "?" & Params.PARAM_FILTRE_UPLOAD & "=IMG';")
            Constants.Add("autreConstante", Params.AUTRE_CONSTANTE)
            ' etc
        End Sub
     
     
        Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
     
            context.Response.ContentType = "application/javascript"
            For Each item In Constants
                context.Response.WriteLine("{0} = '{1}';", item.Key, item.Value)
            Next
        End Sub

  3. #3
    Membre éprouvé
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Billets dans le blog
    2
    Par défaut
    Merci
    Effectivement avec un dictionnaire ça fait encore plus propre.

    Voici une version de l'ASHX avec 2 constantes
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Imports System.Web
    Imports System.Web.Services
     
    Public Class ParamJS
        Implements System.Web.IHttpHandler
     
        Private Constants As New Dictionary(Of String, String)
     
        Public Sub New()
            Constants.Add("filtreUpImg", "?" & Params.PARAM_FILTRE_UPLOAD & "=IMG")
            Constants.Add("GuidEmpty", Guid.Empty.ToString)
        End Sub
     
        Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
     
            context.Response.ContentType = "application/javascript"
            For Each item In Constants
                context.Response.Output.WriteLine("{0} = '{1}';", item.Key, item.Value)
            Next
     
        End Sub
     
        ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
     
    End Class

    faut faire attention , car en utilisant string.format "{0} = '{1}';"
    il faut supprimer les ' et le ; dans le dictionnaire

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Sinon tu avais les méthodes RegisterClientScript ou RegisterStartupScript qui te permettaient d'injecter du javascript depuis le codebehind: http://msdn.microsoft.com/fr-fr/libr...ptmanager.aspx

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Executer fonction javascript à partir du code behind
    Par cortex024 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 05/06/2008, 17h16
  2. Comment inclure un code javascript à partir d'un fichier
    Par Ifrit-ultima dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 03/02/2008, 20h18
  3. Réponses: 4
    Dernier message: 09/11/2007, 14h24
  4. Réponses: 1
    Dernier message: 26/08/2007, 22h21
  5. [PHP-JS] appel de fonction javascript à partir de php
    Par visqueu dans le forum Langage
    Réponses: 2
    Dernier message: 18/03/2007, 18h49

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