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 :

Différence de remplissage d'un objet


Sujet :

JavaScript

  1. #1
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut Différence de remplissage d'un objet
    Bonjour,

    D'habitude j'utilise cette méthode pour remplir un objet sous js
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
     d =  { champ1: "toto", champ2: "tata" };
    Puis je me l'envoi par ajax pour mon code VB, qui l’interprète comme une class avec les property champ1 et champ2
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     $.ajax({
                type: "POST",
                url: XXXX;aspx/MaFonction,
                data: "{MesDonnees:" + JSON.stringify(d) + "}",
                contentType: 'application/json; charset=utf-8',
                dataType: "json",
                success:...
                error:...
            });
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     <Services.WebMethod()> _
        Public Shared Function MaFonction(ByVal MesDonnees As MaClass) As Retour
           dim champ1 = MesDonnees.champ1 
            ...
        End Function
    ça marche nickel

    Mais là, je dois constituer un objet javascript de manière dynamique.
    J'explique plus en détail.
    Pour le moment, je constitue un tableau automatiquement à partie d'une class.
    Je souhaite y intégrer l'ajout d'enregistrement dans ce tableau dynamqiue.
    Code javascript : 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
     
     var myData = {}; 
            $.each($('#Entete > thead > tr:eq(1)')[0].cells, function (index, value) {
     
                            Value = $.trim($('#' + CtrlName).val());
     
                    myData[ParamsTFO.cols[index].SQLName] = Value;
                }
            });
    var myDatas = { OptionEnCours: GetParamTableFullOption(nameW), enr: myData };
     $.ajax({
                type: "POST",
                url: CCC/MaFonction,
                data: "{MesDonnees:" + JSON.stringify(myDatas) + "}",
                contentType: 'application/json; charset=utf-8',
                dataType: "json",
                success:...,
                error:...
            });
    OptionEnCours est un objet constitué classiquement selon la 1ere méthode de mon post
    Côté VB, OptionEnCours est bien reconnu comme une class, mais enr comme une dictionnaire (key=nom de ma colone et value:valeur)
    Les valeur sont bonnes et les key sont bien l'ensemble de mes property de ma class.

    Donc les 2 méthode ne donne pas la même chose visiblement. C'est quoi la différence?
    et comment faire en js pour que le vb l'interprète comme une classe?

    Merci de votre aide
    Si débugger est l'art d'enlever les bugs ... alors programmer est l'art de les créer

  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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    ton data est un string ...

    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data: {"MesDonnees":  JSON.stringify(myDatas) },
    ?
    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 chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut
    Avec le json, oui je sais, d'ailleur pour tout envoi c'est comme ça que je fais,
    var myDatas = { OptionEnCours: GetParamTableFullOption(nameW), enr: myData };
    En fait ici, j'utilise les 2 méthodes OptionEnCours en classique et enr en dynamique.
    La 1ere est vue comme une class côté VB, mais l'autre comme un dictionnary. Pourquoi? je souhaiterai que les 2 soit vue comme une class

    Je sais MyData est inclus dans MyDatas, le choix des variables est pas top

    Sous FireBug : voici ce que j’envoie au VB
    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
    {
        MesDonnees: {
            "OptionEnCours": {
                "MesOptions": [{
                    "ColName": "Name",
                    "Sens": 2,
                    "Search": ""
                }, {
                    "ColName": "Major",
                    "Sens": 2,
                    "Search": ""
                }, {
                    "ColName": "Sex",
                    "Sens": 2,
                    "Search": ""
                }, {
                    "ColName": "English",
                    "Sens": 2,
                    "Search": ""
                }, {
                    "ColName": "Japanese",
                    "Sens": 2,
                    "Search": ""
                }, {
                    "ColName": "Calculus",
                    "Sens": 2,
                    "Search": ""
                }, {
                    "ColName": "Geometry",
                    "Sens": 2,
                    "Search": ""
                }],
                "FiltreGeneral": "",
                "TaillePage": "10",
                "NumPage": "1",
                "PageEnCours": "http://localhost:57436/TableFullOptionPlugin/TFOPlugin.aspx"
            },
            "enr": {
                "Id": "",
                "Name": "aaa",
                "Major": false,
                "Sex": "1",
                "English": "",
                "Japanese": "",
                "Calculus": "",
                "Geometry": ""
            }
        }
    }
    Si débugger est l'art d'enlever les bugs ... alors programmer est l'art de les créer

  4. #4
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut
    Bon j'ai trouvé...

    Côté VB, quand je mettais la class que j'attendais et qu'il y avait une erreur d'accès à la fonction VB. J'ai regardé la trace avec FireBug...
    Pendant le repas (rougailles saucisses) d'un coup le me rappelle pb de Int32 ... et là je me dis quelle buse.
    je n'ai pas rempli les champs Integer du coup en envoi json : "" ce que VB n'aime pas trop comme integer...
    Puis 2nd erreur ma classe contenait une fonction, sauf que en désérialisant, il n'y avait que les property ... donc faut avoir une class qu'avec des property et mettre ses fonctions ailleurs
    Si débugger est l'art d'enlever les bugs ... alors programmer est l'art de les créer

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

Discussions similaires

  1. Python: différence type de base et objet ?
    Par cal23 dans le forum Général Python
    Réponses: 4
    Dernier message: 18/08/2014, 19h26
  2. [PHP 5.0] Différence entre deux tableaux d'objets (array_diff_uassoc)
    Par shawn12 dans le forum Langage
    Réponses: 4
    Dernier message: 22/11/2009, 15h14
  3. Réponses: 1
    Dernier message: 29/10/2008, 14h13
  4. Différence, exemple procédural, événementiel, objet ?
    Par ludophil dans le forum Débuter
    Réponses: 3
    Dernier message: 26/10/2005, 08h35
  5. Réponses: 2
    Dernier message: 01/05/2005, 14h43

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