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 :

Requête post Ajax et JSON [Débutant(e)] [AJAX]


Sujet :

jQuery

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut Requête post Ajax et JSON
    bonjour,
    je travaille sur un projet personnel alliant python et le serveur django, et des pages html avec JQUERY, donc je ne sais pas trop si je dois poster ici ou dans une rubrique python

    Mon but est d'envoyer au format JSON des données à mon serveur DJANGO
    voici mon code
    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
    $.ajax({
      type: "POST",
      url: "/creation/post/",
      data: {"titre": $('#titre').val(),
        "accroche":   $('#accroche').val(),'csrfmiddlewaretoken': '{{ csrf_token }}' },
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(reponse)
                {
                 $('#titre2').text(reponse.titre)
                 $('#accroche2').text(reponse.accroche)
                 $('#titre').css( 'display' , 'none'  )
                 $('#accroche').css( 'display' , 'none'  )
                 alert('succès')
                 alert(reponse)
                 alert(reponse.resultat) 
                },
      beforeSend: function(){alert('avant')},
      complete: function(){ alert('après');},
      error: function(xhr, ajaxOptions, thrownError)
                         {
                           alert("erreur :"+xhr.status+thrownError);
                         }
       });
    Je récupère ces données avec mon serveur DJANGO voici le code :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if request.is_ajax():
            donnees=request.raw_post_data
            print(donnees)
            return HttpResponse(donnees, mimetype='application/json')
        else:
            return HttpResponse(simplejson.dumps({"resultat":"bonjour"}), mimetype='application/json')

    et voici ce que le print me donne sur la console du serveur d'appli
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    titre=trucmuche2&accroche=gfhgh&csrfmiddlewaretoken=qEDHv2YfZvA9z56Vawc9wiCaib8KxEcv
    Comme ça nest pas du tout ce que j'ai envoyé j'ai du mal à comprendre.
    Quelqu'un peux m'expliquer comment récupérer mes données correctement ?

    Merci

  2. #2
    Membre régulier Avatar de marcbuils
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2012
    Messages : 99
    Points : 124
    Points
    124
    Par défaut
    Bonjour tralloc,

    Tu es sur le bon forum, ton serveur DJANGO reçoit bien les données que tu lui envois.
    En effet, la fonction $.ajax prend dans son paramètre "data" une structure javascript (et non des données au format json). Cette structure est ensuite formatée par jQuery au format HTTP POST.

    Donc en JavaScript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"titre": "trucmuche2", "accroche": "gfhgh","csrfmiddlewaretoken": "{{ csrf_token }}" }
    Correspond aux données POST
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    titre=trucmuche2&accroche=gfhgh&csrfmiddlewaretoken=qEDHv2YfZvA9z56Vawc9wiCaib8KxEcv
    (C'est le même format que les URL ou formulaires en GET)

    Donc si tu souhaites envoyer les données au format JSON tu peux les formater sous la forme d'une chaine de caractère JSON à enregistrer dans une variable post.

    ça pourrait donner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $.ajax({
      type: "POST",
      url: "/creation/post/",
      data: { "json": JSON.stringify({"titre": $('#titre').val(),
        "accroche":   $('#accroche').val(),'csrfmiddlewaretoken': '{{ csrf_token }}'}) },
    ce qui devrait donner coté serveur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    json={"titre":"trucmuche2", "accroche":"gfhgh","csrfmiddlewaretoken":"{{ csrf_token }}"}
    En supprimant "json=" tu obtiendras tes données en json.


    Bon code !
    Pour moi, une informatique efficace est avant tout une informatique intuitive
    Liste de mes cours: http://marcbuils.developpez.com
    Si vous appréciez mon intervention, dite le avec le

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    Super !!! Merci.

    La réussite est maintenant très proche, mais hélas il reste un problème. Le strignify doit transformer les caractères : voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    json=%7B%22titre%22%3A%22trucmuche2%22%2C%22accroche%22%3A%22gfhgh%22%7D
    Une idée ?

    Faut-il remodifier tout ça manuellement à postériori, ça m'étonnerais un peu.

  4. #4
    Membre régulier Avatar de marcbuils
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2012
    Messages : 99
    Points : 124
    Points
    124
    Par défaut
    En fait tu reçoit les données formatées au format POST. %7B corrspond à {, %22 à ", ect...

    Tu dois probablement avoir une fonction en python/DJANGO pour formater correctement les données que tu reçois. Mais là je ne peux plus t'aider car ce n'est plus du JavaScript
    Pour moi, une informatique efficace est avant tout une informatique intuitive
    Liste de mes cours: http://marcbuils.developpez.com
    Si vous appréciez mon intervention, dite le avec le

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    Ok c'est donc de la modif à postériori.
    Je te remercie d'avoir pris le temps de répondre, ça fait quelques soirs que je cherchais
    A+

  6. #6
    Membre régulier Avatar de marcbuils
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2012
    Messages : 99
    Points : 124
    Points
    124
    Par défaut
    Avec plaisir
    Pour moi, une informatique efficace est avant tout une informatique intuitive
    Liste de mes cours: http://marcbuils.developpez.com
    Si vous appréciez mon intervention, dite le avec le

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

Discussions similaires

  1. Erreur AsyncTask requête POST JSON
    Par mailoy dans le forum Android
    Réponses: 3
    Dernier message: 04/05/2015, 10h43
  2. [AJAX] Requête POST en Ajax
    Par abc.xyz dans le forum AJAX
    Réponses: 17
    Dernier message: 10/01/2015, 23h27
  3. Erreur 500 dans une requête POST AJAX
    Par Netci dans le forum Services Web
    Réponses: 0
    Dernier message: 07/05/2013, 12h31
  4. Ajax avec jQuery: envoi par POST retour en JSON
    Par band22 dans le forum jQuery
    Réponses: 1
    Dernier message: 14/10/2011, 10h54
  5. Requête Ajax Tableau Json
    Par sylvain230 dans le forum jQuery
    Réponses: 12
    Dernier message: 19/07/2011, 14h23

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