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

jQuery Discussion :

POST d'un tableau d'objets json [AJAX]


Sujet :

jQuery

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut POST d'un tableau d'objets json
    Je dois récupérer des infos provenant d'un formulaire. Je ne peux utiliser la fonction serialize() car des données sont envoyées vers plusieurs tables et des vérifs doivent être faites.
    Le problème est simple, je n'arrive pas à envoyer les données dans la table concernée. J'ai un tableau d'objet qui récupère les infos souhaitées mais à l'intérieur de ma requête ajax ça fail.
    Je suis sous Laravel

    Mon tableau contenant mes objets (seulement 2 pour cet exampe)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    let dataP =[
        {
            fk_id_quest:1,
            fk_id_post:id,
            reponse : $("#descriptif_offre").val(),
            created_at:date.getTime()/1000,
        },{
            fk_id_quest:2,
            fk_id_post:id,
            reponse : $("#xp_ss_traitance").val(),
            created_at:date.getTime()/1000
        }]
    Ma requête ajax
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $.ajax({
        url:'/register/addpostulantR',
        method:'post',
        dataType: "json",
        data:JSON.stringify(dataP)
        ,success(data){
            console.log("succ "+JSON.stringify(data));
        },error:()=>{
            console.log('error ');
        }
    })
    Mon Controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public function addPostulantR(Request $request){
            return response()->json([
                'dataP' => Intervenant::addPostulantR($request->all())
            ]);
        }
    Mon model
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        public static function addPostulantR($data){
            return DB::table('reponse')
                ->insertGetId($data);
        }
    Je me suis pas mal documenté, j'ai fais beaucoup de test, tout ce que j'ai pu trouver du moins, mais rien ne fonctionne, merci de m'éclairer.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    en supposant que tout ce passe bien Client -> Serveur -> Client

    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
    $.ajax({
        url:'/register/addpostulantR',
        method:'post',
        dataType: "json",      // défini le type de retour
        data:JSON.stringify(dataP)
        ,success(data){
    //        console.log("succ "+JSON.stringify(data));
            // --------------------------------------
            // les données sont déjà au format objet
            // --------------------------------------
            console.log("succ ", data);
     
        },error:()=>{
            console.log('error ');
        }
    })

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Oui tout se passe bien, si je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    let dataP =
        {
            fk_id_quest:1,
            fk_id_post:id,
            reponse : $("#descriptif_offre").val(),
            created_at:date.getTime()/1000,
        };
    avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $.ajax({
        url:'/register/addpostulantR',
        method:'post',
        dataType: "json",
        data:dataP
        ,success(data){
            console.log("succ "+data);
        },error:()=>{
            console.log('error ');
        }
    })
    Je récupère bien mes valeurs, mais lorsque je change en ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    let dataP =[
        {
            fk_id_quest:1,
            fk_id_post:id,
            reponse : $("#descriptif_offre").val(),
            created_at:date.getTime()/1000,
        },{
     
            fk_id_quest:2,
            fk_id_post:id,
            reponse : $("#xp_ss_traitance").val(),
            created_at:date.getTime()/1000
        }];
    ça fail

    EDIT : Je veux pas les récupérer j'aimerais juste les enregistrer dans la table concernée

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Ma route peut être le problème vient de là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Route::post('/register/addpostulantR','IntervenantController@addPostulantR');

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Le problème vient de php pas de l'ajax, mea culpa, faudrait peut être transférer ce post vers un autre plus approprié.Désolé de la gêne occasionée.

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Il est certains qu'entre la représentation #1 et #2 de tes données tu te retrouves à traiter 2 structure différentes.

    #1 pourrait être vu côté serveur comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"fk_id_quest":"ID_QUEST_#1","fk_id_post":"ID_POST_#1","reponse":"REPONSE_#1","created_at":"DATE_CREATION_#1"}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Array
    (
        [fk_id_quest] => ID_QUEST_#1
        [fk_id_post] => ID_POST_#1
        [reponse] => REPONSE_#1
        [created_at] => DATE_CREATION_#1
    )
    #2 comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [{"fk_id_quest":"ID_QUEST_#1","fk_id_post":"ID_POST_#1","reponse":"REPONSE_#1","created_at":"DATE_CREATION_#1"},{"fk_id_quest":"ID_QUEST_#2","fk_id_post":"ID_POST_#2","reponse":"REPONSE_#2","created_at":"DATE_CREATION_#2"}]
    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
    Array
    (
        [0] => Array
            (
                [fk_id_quest] => ID_QUEST_#1
                [fk_id_post] => ID_POST_#1
                [reponse] => REPONSE_#1
                [created_at] => DATE_CREATION_#1
            )
     
        [1] => Array
            (
                [fk_id_quest] => ID_QUEST_#2
                [fk_id_post] => ID_POST_#2
                [reponse] => REPONSE_#2
                [created_at] => DATE_CREATION_#2
            )
     
    )
    Nota :
    tu devrais apporter plus de rigueur dans l'écriture de ton code (homogénéisation codage), par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $.ajax({
        url: "/register/addpostulantR",
        method: "POST",
        dataType: "text",
        data: JSON.stringify(dataP),
        success: (data) => {
            console.log("success :\n", data);
        },
        error: (xhr, erreur) => {
            console.log("error %s:\n", erreur, xhr.responseText);
        }
    });

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Oui j'ai eu la même réflexion hier soir, je suis en retard et j'ai voulu aller trop vite, encore merci du temps que tu m'as accordé.

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

Discussions similaires

  1. [Google Sheets] Transformer un tableau 2D en objet JSON
    Par emulien dans le forum APIs Google
    Réponses: 3
    Dernier message: 02/06/2019, 20h10
  2. objets json reception post en php
    Par superlucile dans le forum Langages serveur
    Réponses: 6
    Dernier message: 18/01/2015, 21h21
  3. Retourner un tableau d'objet avec json vers javascript
    Par beegees dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/04/2013, 20h20
  4. Requête Post et Tableau d'objets
    Par Stouille89 dans le forum jQuery
    Réponses: 1
    Dernier message: 12/12/2010, 22h50
  5. récupérer un tableau d'objets encodé en json
    Par peaulisse dans le forum Langage
    Réponses: 0
    Dernier message: 24/03/2010, 19h31

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