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 :

[VS 2008 - Javascript] appel d'une fonction a partir du code behind


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Par défaut [VS 2008 - Javascript] appel d'une fonction a partir du code behind
    Bonjour,

    J'ai une page d'accueil avec une carte OpenLayers. Lors de mes différents traitements, j'effectue un ajout d' "événements" représentés par des icônes sur ma carte. OpenLayers est en javascript.

    Je récupère mes événements en Web Services. J'obtiens donc un tableau de structure (un événement est une structure).
    je mets une boucle for pour "dérouler" mon tableau (en mode débogage, mon tableau est bien rempli).

    Ensuite, je crée un string qui contient le script que je voudrais envoyer au client, plus précisément à une fonction javascript dans le head.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string script = "<script language=\"javascript\">add_Event(" + 
        Tableau[i].attribut1.ToString() + "," + Tableau[i].attribut1.ToString()+ ")</script>";
    string script2 = "<script language=\"javascript\">alert(\"script\")</script>";
    Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "add_event()", script);
    Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "add_event()", script2);
    //Response.Write(script2);
    Le script2 contient un message box qui s'affiche bien. Mais le premier script qui contient les données ne "passe" pas. Apparement, il faut mettre une chaine "continue" (sans les +). J'ai mis le + avec le "alert" et ca marchait plus.

    Remarque : Page.ClientScript.RegisterStartupScript et Response.Write sont pareils.

    Auriez-vous une idée, s'il vous plait ?
    Merci beaucoup !
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  2. #2
    Membre émérite Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Par défaut
    Quand j'enlève la balise <script> de la chaine de caractère, cette chaine est affichée tout en bas de la page. Par contre, avec la balise, rien ne se passe...
    ça ne fonctionne pas...

    Même si ça n'a pas grand intérêt voici la fonction javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function add_Event(evId, var1, var2, var3, var4, evLongitude,
             evLatitude, var5, var6, var7, var8, var9, var10, var11) 
    {
    var lonLatMarker = lonLatToMercator(new OpenLayers.LonLat(evLongitude, evLatitude));             
     
                var icon_event = new OpenLayers.Icon('./images/image.gif',new OpenLayers.Size(20,30));
                var event_marker = new OpenLayers.Marker(lonLatMarker,icon_event);
                events_markers.addMarker(event_marker);
    }
    Merci

    [EDIT] Remarque : Le nombre de parametres correspond bien à celui que j'ai en behind. [/EDIT]
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  3. #3
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Citation Envoyé par slim Voir le message
    Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "add_event()", script);
    Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "add_event()", script2);
    Tu inscris tes deux scripts avec la même clef (Type, Key).
    Soit tu changes la clef d'un des deux scripts, soit tu écris les deux scripts en un seul sous la même clef.

  4. #4
    Membre émérite Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Par défaut
    Bonjour!

    Merci pour ta réponse.

    j'ai changé la clé. j'ai mis ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "add_Event", script);
                string script2 = "<script language=\"javascript\">alert(" + script + ")</script>";
                Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "add_Event2", script2);
    j'ai ajoute des + pour qu'il prenne en compte le script que j'ai ecris au début. Mais il ne me l'affiche pas. j'ai meme essaye avec script.ToString()...
    Avec les +, l'alerte ne s'affiche meme plus.

    Merci

    [EDIT] avec ce code, il m'affiche une parenthèse en bas de page a gauche. C'est la dernière parenthèse du 2eme script script2 (c'est sur que c'est le 2eme, j'ai teste en ajoutant un tiret après la parenthèse et il me l'affiche aussi!!), juste avant la balise </script>.[/EDIT]
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  5. #5
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Citation Envoyé par slim Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string script2 = "<script language=\"javascript\">alert(" + script + ")</script>";
    A mon avis, ce code génère une erreur Javascript car alert attend une chaîne bien formatée... Si vraiment tu souhaites afficher ta variable script, formate la chaîne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string script2 = "<script language=\"javascript\">alert('" + script.Replace("'", "''") + "')</script>";

  6. #6
    Membre émérite Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Par défaut
    hum.... aucun effet. et j'ai toujours ma parenthèse en bas a gauche (cf mon dernier [EDIT])
    En fait, le problème que je voudrais résoudre est celui du premier script.
    j'ai mis le deuxième pour tester...
    Ma question est comment faire appel à une fonction javascript en lui passant des paramètres c# ? Normalement, le code que j'ai mis doit marcher mais apparemment en concaténant des chaines de caractères avec l'opérateur +, ca marche pas...

    Merci.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  7. #7
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Peux-tu poster le HTML généré ?

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

Discussions similaires

  1. appel d'une fonction C à partir de code asm !
    Par b52x_med dans le forum Programmation d'OS
    Réponses: 1
    Dernier message: 05/08/2012, 13h57
  2. Appel d'une fonction mysql dans du code javascript
    Par johnson95 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/09/2008, 16h29
  3. [Compilation] Appel d'une fonction C++ depuis du code C
    Par bladerunners dans le forum C++
    Réponses: 1
    Dernier message: 06/09/2006, 14h26
  4. Réponses: 4
    Dernier message: 28/07/2006, 14h01
  5. [javascript] appel d'une fonction à partir d'une popup
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/08/2005, 15h14

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