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 :

Envoie un tableau en POST [Débutant]


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2011
    Messages : 35
    Points : 35
    Points
    35
    Par défaut Envoie un tableau en POST
    Bonjour,

    Sur mon site en ASP.Net MVC, j'essaye d'envoyer le contenu d'un tableau dans une fonction en utilisant un POST mais rien n'arrive et je ne comprends pas pourquoi.

    Ma classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class AdresseIP
        {
            public int? Idclient { get; set; }
            public int? ip1 { get; set; }
            public int? ip2 { get; set; }
            public int? ip3 { get; set; }
            public int? ip4 { get; set; }
            public int? idplan { get; set; }
        }
    Ma fonction (vide pour le moment) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            [HttpPost]
            public ActionResult MAJIP(List<AdresseIP> lst)
            {
                return View(1);
            }
    La méthode que j'utilise pour envoyer le tableau depuis ma page :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     function Valider(tableID) {
            console.log("test " + tableID);
            var IPs = new Array();
            $("#" + tableID + " TBODY TR").each(function () {
                var row = $(this);
                var IP = {};
                IP.Idclient = row.find("TD").eq(0).text();
                IP.idplan = row.find("TD").eq(1).text();
                IP.ip1 = row.find("TD").eq(2).text();
                IP.ip2 = row.find("TD").eq(3).text();
                IP.ip3 = row.find("TD").eq(4).text();
                IP.ip4 = row.find("TD").eq(5).text();
                IPs.push(IP);
     
            });
     
     IPs = JSON.stringify({ 'IPs': IPs });
            console.log(IPs);
            $.ajax({
                type: "POST",
                url: "/IP/MAJIP/",
                data: JSON.stringify(IPs),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (r) {
                    alert(r);
                    if (r == 1) {
                        console.log('test1 ' + r)
                    } else {
                        console.log('test2 ' + r);
                    }
     
                }
            });
        }

    Le console.log(IPs); affiche bien le contenu du tableau..

    Il y a peut être des méthodes plus efficaces mais je n'en connais pas.

    Quand je valide, ma fonction reçoit un null. Pourtant tous mes console.log(IPs); renvoient la valeur attendue.

    Du coup, là je ne sais pas.

    Une idée SVP ?

  2. #2
    Membre du Club
    Homme Profil pro
    Alternant
    Inscrit en
    octobre 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : octobre 2019
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    Une fois l'avoir serializer en JSON tu obtiens un String que tu dois Déserializer en Tableau or tu cherches directement à récupérer un tableau dans ton controller

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2011
    Messages : 35
    Points : 35
    Points
    35
    Par défaut
    Merci pour ton retour.

    Etant débutant dans ce domaine, je n'ai pas trop compris et je m'en excuse.

    Qu'entends du par "Déserializer en Tableau" ?

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2011
    Messages : 35
    Points : 35
    Points
    35
    Par défaut
    J'ai testé la solution ci-dessous mais je reçois toujours un null.

    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
    20
    21
    22
    console.log(JSON.parse(JSON.stringify(IPs)));
            IPs2 = JSON.parse(JSON.stringify(IPs));
            console.log(IPs2);
     
     
            $.ajax({
                type: "POST",
                url: "/IP/MAJIP/",
                data: IPs2,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (r) {
                    alert(r);
                    if (r == 1) {
                        console.log('test1 ' + r)
                    } else {
                        console.log('test2 ' + r);
                    }
     
                }
            });
        }

  5. #5
    Membre du Club
    Homme Profil pro
    Alternant
    Inscrit en
    octobre 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : octobre 2019
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    En gros, dans ton contrôleur, quand tu récupères t'as variable au lieux de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public ActionResult MAJIP(List<AdresseIP> lst)
    Tu vas mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public ActionResult MAJIP(string lst)
    Puis dans ton javascript :
    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
    $.ajax({
                type: "POST",
                url: "/IP/MAJIP/",
                data: {'lst' : JSON.stringify(IPs)},
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (r) {
                    alert(r);
                    if (r == 1) {
                        console.log('test1 ' + r)
                    } else {
                        console.log('test2 ' + r);
                    }
     
                }
            });

    Ce que tu fais avec le Javascript c'est que tu vas retranscrire ton array en chaîne de caractères (string) donc tu ne peux pas récupérer de List dans ton controlleur si ton array est devenu un string.

    Pour le remettre en list il te suffit de compléter comme ceci ta fonction dans ton controlleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public ActionResult MAJIP(string lst)
    {
    List<AdresseIP> maList = JsonSerializer.Deserialize<List<AdresseIP>>(lst);
    }

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2011
    Messages : 35
    Points : 35
    Points
    35
    Par défaut Réponse
    Bonjour,

    Ta réponse m'a bien aidé !

    La méthode que j'emploie maintenant c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $.post('@Url.Action("MAJGroupe", "UserDroits")', { lst: JSON.stringify(Users) }, function(data) {
     
            })
    Et à la réception

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public ActionResult MAJGroupe(string lst)
    {
    List<UserGroupMAJ> maList = JsonSerializer.Deserialize<List<UserGroupMAJ>>(lst);
    }
    Cette méthode me débloque sur plein de choses alors MERCI !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/06/2022, 08h08
  2. Envoi de variables avec POST
    Par oops! dans le forum Flash
    Réponses: 5
    Dernier message: 06/08/2006, 21h14
  3. [AJAX]problème d'envoie de données méthode POST
    Par xave dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/07/2006, 16h35
  4. [Debutant] envoi d'un message POST avec une URL
    Par Yannos94 dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 14/06/2006, 10h22
  5. Envoi incomplet avec methode post
    Par Tr@nkill dans le forum ASP
    Réponses: 8
    Dernier message: 16/05/2005, 12h14

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