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

JavaScript Discussion :

Fonction JavaScript avec un tableau en paramètre


Sujet :

JavaScript

  1. #1
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut Fonction JavaScript avec un tableau en paramètre
    Bonjour, j'ai posté ma question sur un autre forum et je n'ai pas pu la supprimer, je suis désolée

    j'ai mis dans mon code c#

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BtnStations.Attributes.Add("onClick", "javascript:findAllAddress('" + tabStation+ "'); return false;");
    tab station c'est un tableau a deux dimension

    maintenant je veux construire ma fonction javascript:findAllAddress a laquelle je passe mon tableau en parametre,

    je fais comme ca :
    Code : 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
    function findAllAddress(tabStation) {
     
        var n = tabStation.length;
        var text,text2 = "";
        for (var i = 0; i < n; i++) {
     
            var address = tabStation[i][0];
            var name = tabStation[i][1];
     
     
            text += tabStation[i][0];
            text2 += tabStation[i][1];
        }
     
        alert(n + '/' + text+'/'+text2);
     
    }
    mais il me retourne des choses bizarre, par exemple le n = 16 alors que mon tableau dans le code c# me retourne 4

    text = string.systeme[,];
    text2 = undefined

    aidez moi svp je galere avec ce programme

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javascript:findAllAddress('" + tabStation+ "')
    ben tu lui passes un strins là ...

    regarde ton code source html généré ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    je lui ai passé avant tabStation[ddladr.items.count,2] sachant que :
    Code : 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
    string[,] tabStation;
            tabStation = new string[ddlAdr.Items.Count,2];
                connection.Open();
                System.Data.SqlClient.SqlDataReader oDBDataReader2;
                String Query2 = "SELECT * FROM [StationsServices]";//  where ID_Station =" + ddlAdr.Items[d].Value
                SqlCommand cmdDatabase2 = new SqlCommand(Query2, connection);
                oDBDataReader2 = cmdDatabase2.ExecuteReader();
                int a = 0;
                while (oDBDataReader2.Read() == true)
                {
                    for (int i = a; i <= ddlAdr.Items.Count; i++)
                    {
                        tabStation[i, 0] = oDBDataReader2["Adresse"].ToString();
                        tabStation[i, 1] = oDBDataReader2["Name_station"].ToString();
                        a = a+1;
                        break;
                    }
     
                }
                connection.Close();
     
                            BtnStations.Attributes.Add("onClick", "javascript:findAllAddress('" + tabStation[ddlAdr.Items.Count, 2] + "'); return false;");
    il me dis index out of range

  4. #4
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    Aidez moi svp a résoudre mon problème ou cherchez une autre alternative pour surmonter mon blockage

  5. #5
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Je ne savais même pas qu'on pouvait manipuler une page web en C#...

    Msysteme, lis les règles de cette section et poste-nous le code de la page générée
    Ce sera infiniment plus simple pour toi comme pour nous pour trouver le problème.
    One Web to rule them all

  6. #6
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    voila le code généré :

    Code : 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
     
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
     
     <head>
              <script type="text/javascript" src="https://www.google.com/jsapi"></script>
              <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false"></script>
              <script type ="text/javascript" src="Scripts/script.js"></script>
              <title>
    	Stations de Services
    </title><link href="Styles/main.css" rel="stylesheet" type="text/css" /></head>
     
        <body onload="initialize()" onunload="GUnload()">
            <header>
                <h2 style = "text-align:center">Localisation </h2>
            </header>
     
            <div id="container" class="container">
                 <div id="gmap_canvas"></div>
                 <form name="searchStation" method="post" action="default.aspx" id="searchStation">
    <div>
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
    <input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTUwMDY1NDM5Nw9kFgICAw9kFgICAw9kFgJmD2QWCgIBDxAPFgYeDURhdGFUZXh0RmllbGQFDE5hbWVfU3RhdGlvbh4ORGF0YVZhbHVlRmllbGQFCklEX3N0YXRpb24eC18hRGF0YUJvdW5kZ2QQFQQIU3RhdGlvbjEIU3RhdGlvbjIIU3RhdGlvbjMIU3RhdGlvbjQVBAExATIBMwE0FCsDBGdnZ2cWAWZkAgUPD2QWAh4Hb25DbGljawVuamF2YXNjcmlwdDpmaW5kQWRkcmVzcygnUDQyNjYsS2VuaXRyYScsJ1N0YXRpb24xJywnMCcsJzAnLCdQNDI2NixQSzIwMCcsJ01yIFgnLCdQUiAgICAgICAgJywnJyk7IHJldHVybiBmYWxzZTtkAgcPD2QWAh8DBSlqYXZhc2NyaXB0OmNsZWFyT3ZlcmxheXMoKTsgcmV0dXJuIGZhbHNlO2QCCQ8PZBYCHwMFQGphdmFzY3JpcHQ6ZmluZEFsbEFkZHJlc3MoJ1N5c3RlbS5TdHJpbmdbLF0nLCc0Jyk7IHJldHVybiBmYWxzZTtkAgsPD2QWAh8DBTpqYXZhc2NyaXB0OmdldEltYWdlKCd0aXRyZScsICdnbWFwX2NhbnZhcycpOyByZXR1cm4gZmFsc2U7ZGRLVRoa5xLFFKScAgDnna2ygzoSGA==" />
    </div>
     
    <script type="text/javascript">
    //<![CDATA[
    var theForm = document.forms['searchStation'];
    if (!theForm) {
        theForm = document.searchStation;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    //]]>
    </script>
     
     
    <script src="/Stations/WebResource.axd?d=LWijCllXn4iR2kneRO7uVkgEDNOV_ChbsUjwj-MSAWBiuJzLrQ7CpbiBtM9HD_bwlYAU8kLljLmrkbvpJdwbGoi3gzo1&amp;t=635294356354843750" type="text/javascript"></script>
     
     
    <script src="/Stations/ScriptResource.axd?d=AF4SFoZkqqPp6rK6foGXh3dY_-csxuc9pFEJ00FTLlzHJbN-tH1PJVgofZ-F3VxXOCLvcaygxmtNPxeXIXJQsXlAUGwXzZMsEtPnQYr3crxGsZqoat6_OfTA32HajcpCpOHZuSOmAPBGf4FfQPC3MGffEQBLOIi8rYqOGNnQwSZ8Dglg0&amp;t=257cb3bf" type="text/javascript"></script>
    <script type="text/javascript">
    //<![CDATA[
    if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');
    //]]>
    </script>
     
    <script src="/Stations/ScriptResource.axd?d=IQzOdfDLQqtTyGsGWiQ1VANQRKthDEB5yntfEsyXKv2ZNc7cbugS6QY3lOREiuipFM7luHcOT-Yp9rZlEbv4TlhRO1dBP01VmCdx9PsxZPcGDlc5UYaNWXnB0KEdFGQFoGCgdLNQeUZ0PDN3I74NBru0-w2O7oQjzY2agDCDkpVyjzSp0&amp;t=257cb3bf" type="text/javascript"></script>
    <div>
     
    	<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWCwLK1ruqDgKUwa2eCwKbrofwBwKarofwBwKZrofwBwKYrofwBwLB34SyCwKY4/obAq2S5aIKAuT+4MwHAoOTnbEFKV2OMSUN6br1Sn1If0AMCk1A3oM=" />
    </div> 
                 <div class="actions">
                 <script type="text/javascript">
    //<![CDATA[
    Sys.WebForms.PageRequestManager._initialize('ScriptManager1', document.getElementById('searchStation'));
    Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tUpdatePanel1'], [], [], 90);
    //]]>
    </script>
     
     
    <div id="UpdatePanel1">
     
                    <div class="panel">
                        <label for="gmap_where">Station de service :</label>
                        <select name="ddlAdr" onchange="javascript:setTimeout('__doPostBack(\'ddlAdr\',\'\')', 0)" id="ddlAdr">
    		<option selected="selected" value="1">Station1</option>
    		<option value="2">Station2</option>
    		<option value="3">Station3</option>
    		<option value="4">Station4</option>
     
    	</select>
                    </div>
                     <input type="hidden" name="hidTest" id="hidTest" value="1" />
                     <div class="panel">
                    <input type="submit" name="btnLocaliser" value="Localiser" onclick="javascript:findAddress('P4266,Kenitra','Station1','0','0','P4266,PK200','Mr X','PR        ',''); return false;" id="btnLocaliser" class="button" /> 
                    <input type="submit" name="btnClear" value="Clear all" onclick="javascript:clearOverlays(); return false;" id="btnClear" class="button" /> 
                     <input type="submit" name="BtnStations" value="All Stations" onclick="javascript:findAllAddress('System.String[,]','4'); return false;" id="BtnStations" class="button" /> 
                <input type="submit" name="btnImg" value="To Image" onclick="javascript:getImage('titre', 'gmap_canvas'); return false;" id="btnImg" class="button" />  </div>
     
                     <a href="javascript:printMap2()"> Imprime_CarteTexte</a> 
     
     
    </div>
                    <input type="hidden" id="lat" name="lat" value="34.2500000" />
                    <input type="hidden" id="lng" name="lng" value="-6.5833330" />
     
                 </div>   
     
     
    <script type="text/javascript">
    //<![CDATA[
    Sys.Application.initialize();
    //]]>
    </script>
    </form>
            </div>
        </body>
     
     
    </html>
    voici ma ligne ce qu'il retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <input type="submit" name="BtnStations" value="All Stations" onclick="javascript:findAllAddress('System.String[,]','4'); return false;" id="BtnStations" class="button" />
    la fonction javascript :

    Code : 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
    30
    31
    32
    33
    function findAllAddress(tabStation, n) {
     
        var text,text2 = "";
        for (var i = 0; i < n; i++) {
     
            var address = tabStation[i][0];
            var name = tabStation[i][1];
     
            geocoder.geocode({ 'address': address }, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) { 
     
                    var addrLocation = results[0].geometry.location;
                    map.setCenter(addrLocation);
     
                    document.getElementById('lat').value = results[0].geometry.location.$a;
                    document.getElementById('lng').value = results[0].geometry.location.ab;
     
                    var addrMarker = new google.maps.Marker({
     
                        position: addrLocation,
                        map: map,
                        title: results[0].formatted_address
                    });
                    markers.push(addrMarker);
                }
            });
            text += tabStation[i][0];
            text2 += tabStation[i][1];
        }
     
        alert(n + '/' + text+'/'+text2);
     
    }
    et l'appel a la fonction se fait :

    Code : 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
    string[,] tabStation = new string[ddlAdr.Items.Count,2];
     
                connection.Open();
                System.Data.SqlClient.SqlDataReader oDBDataReader2;
                String Query2 = "SELECT * FROM [StationsServices]";//  where ID_Station =" + ddlAdr.Items[d].Value
                SqlCommand cmdDatabase2 = new SqlCommand(Query2, connection);
                oDBDataReader2 = cmdDatabase2.ExecuteReader();
                int a = 0;
                while (oDBDataReader2.Read() == true)
                {
                    for (int i = a; i < ddlAdr.Items.Count; i++)
                    {
                        tabStation[i, 0] = oDBDataReader2["Adresse"].ToString();
                        tabStation[i, 1] = oDBDataReader2["Name_station"].ToString();
                        a = a+1;
                        break;
                    }
     
                }
                connection.Close();
     
                BtnStations.Attributes.Add("onClick", "javascript:findAllAddress('" + tabStation + "','" + ddlAdr.Items.Count + "'); return false;");
    j'espere trouver une solution pour mon probleme qui est : exécuter une fonxction javascript pour chaque element récupéré dans un datareader

  7. #7
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "javascript:findAllAddress('System.String[,]','4'); return false;


    Je pense que c'est assez explicite, avec ça qu'est-ce que JavaScript peut bien faire ? Ce n'est ni un tableau ni un nombre que tu passes en argument, ce sont deux String qui ne veulent pas dire grand chose pour JavaScript. Il y a donc un problème côté C# pour générer le code au bon format, et si c'est côté C# je ne peux pas t'aider.
    One Web to rule them all

  8. #8
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    J'ai postė la fonction c# sur le forum c# mais je ne reçois pas de rėponse je bloque

  9. #9
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    salut, j'ai pu mettre a jour mon code c# grâce a un membre ici dans le forum c#

    J'ai réussi a passer a fonction javascript mon tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BtnStations.Attributes.Add("onClick", "javascript:findAllAddress('" + result + "'); return false;");
    Le code html donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="javascript:findAllAddress('[[P4266,ville,Station1],[R405,ville,Station2],[P4201,ville,Station3],[N1,ville,Station4]]'); return false;" id="BtnStations" class="button" />
    [P4201,ville,Station3] equivalent a : champ 1 = P4201,ville et champ 2 = Station3

    mon probleme maintenant est au niveau de la fonction javascript parce qu'il ne comprend pas que le parametre passée est un tableau :
    Code : 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
    30
    31
    32
    33
    34
    function findAllAddress(tabStation) {
     
        var text, text2 = "";
        var n = tabStation.length;
        for (var i = 0; i < n; i++) {
     
            var address = tabStation[i][0];
            var name = tabStation[i][1];
     
            geocoder.geocode({ 'address': address }, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) { 
     
                    var addrLocation = results[0].geometry.location;
                    map.setCenter(addrLocation);
     
                    document.getElementById('lat').value = results[0].geometry.location.$a;
                    document.getElementById('lng').value = results[0].geometry.location.ab;
     
                    var addrMarker = new google.maps.Marker({
     
                        position: addrLocation,
                        map: map,
                        title: results[0].formatted_address
                    });
                    markers.push(addrMarker);
                }
            });
            text += tabStation[i][0];
     
        }
     
        alert(n + '/' + text);
     
    }

  10. #10
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Non, ce n'est toujours pas le bon format...

    Tu as ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '[[P4266,ville,Station1],[R405,ville,Station2],[P4201,ville,Station3],[N1,ville,Station4]]'
    Il te faut ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [['P4266,ville','Station1'],['R405,ville','Station2'],['P4201,ville','Station3'],['N1,ville','Station4']]
    Un petit tour du côté des tutos et FAQ sur les tableaux JavaScript ne ferait pas de mal



    One Web to rule them all

  11. #11
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    Merci infiniment c'est ce qu'il me fallait
    tu m'a aidé a résoudre deux problème en même temps merci merci



  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    ben tu lui passes un strings là ...

    regarde ton code source html généré ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. appel fonction javascript avec parametre tableau en php
    Par cocobelle89 dans le forum Langage
    Réponses: 3
    Dernier message: 25/07/2012, 09h47
  2. appel fonction javascript avec parametre tableau en php
    Par cocobelle89 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/07/2012, 13h36
  3. [MySQL] Faire un Callback JavaScript avec un tableau en paramètre
    Par User Name dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/06/2012, 16h30
  4. Réponses: 1
    Dernier message: 25/07/2007, 10h03
  5. Réponses: 3
    Dernier message: 22/03/2007, 07h19

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