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 :

Ajax Post avec jQuery


Sujet :

jQuery

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 31
    Par défaut Ajax Post avec jQuery
    Bonjour a tous,

    Je cherche simplement a envoyer un formulaire a l'aide d'une requête Ajax. J envoies mes infos en Json ce qui me donne le code suivant :

    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: '',
            type: 'POST',
            data: JSON.stringify({ country : jcountry, region : jregion, from : jfrom, to : jto, currency : jcurrency }),
    	dataType: 'json',
            success: function() {
    		alert("success")
                    $.mobile.changePage("menu1.html");
            },
            error: function (xhr, ajaxOptions, thrownError) {
                    alert( "Error: " + xhr.status + "\n" +
                        "Message: " + xhr.statusText + "\n" +
                        "Response: " + xhr.responseText + "\n" + thrownError);
    		$.mobile.changePage("menue2.html");
            }
    });

    L'URL étant factice j'obtiens une erreur d'accord.
    Mais avec firebug, dans mon header j'obtiens :
    Content-Type application/x-www-form-urlencoded; charset=UTF-8
    Pourtant la source du POST est de ce type :
    Source
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"country":"fhfh","region":"hfgh","from":"04/04/2013","to":"04/18/2013","currency":"fgh"}
    Si j'ajoute dans mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    contentType: 'application/json',
    Je ne visualise plus le POST avec Firebug ..

    Quelqu'un peut il m’éclairer ? Merci a tous

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data: JSON.stringify({ country : jcountry, region : jregion, from : jfrom, to : jto, currency : jcurrency }),
    Cette ligne n'a aucun sens, ce n'est pas comme ça qu'on envoie des paramètres avec jQuery !
    Tu dois soit passer un objet JSON, que jQuery se chargera de transformer en querystring valide, soit passer directement la querystring, mais en aucun cas tu ne peux passer un JSON sérialisé !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 31
    Par défaut
    D'accord mais si j’enlève cette ligne, le message envoyé n'est pas du Json
    :/
    Au niveau du serveur il doit recevoir du Json et il me renverra du JSON

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ton serveur ne peut pas recevoir de JSON car le protocole HTTP par lequel transite une requête AJAX ne connais pas ce format.
    Tout ce que tu peux envoyer, c'est du texte.
    Ensuite, tu vas me dire que justement, tu utilises JSON.stringify pour envoyer du texte. Là-dessus, je suis à peu près d'accord, mais dans la syntaxe que j'ai soulignée, tu n'envoies pas un paramètre dont la valeur est une chaine JSON, tu envoies uniquement la chaine JSON, ton serveur n'a donc aucun moyen de récupérer la valeur envoyée.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 31
    Par défaut
    Ok pour les requêtes HTTP
    Pour le JSON.stringify, je ne comprend pas parce que je récupère les valeurs de mon formulaire. J'ai bien suivi la doc Jquery Mobile pourtant.

    Du coup je dois me contenter de mon premier code sans le JSON.stringify ! En fait j'aimerais être sur de cette syntaxe avant de basculer coté serveur.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Tu ne veux pas comprendre ce que je te dis... (ou alors c'est moi qui m'exprime trop mal ).

    Pour passer une valeur en GET ou en POST, il faut envoyer un couple clé/valeur, par exemple ?foo=bar.
    Dans la façon dont tu fais ta requête, tu n'envoies que la valeur, ça ne peut pas fonctionner !

    EDIT
    je récupère les valeurs de mon formulaire
    Euh... dans le code que tu montres, non, on ne voit pas à quel moment les variables constituant ton JSON sont valorisées...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 31
    Par défaut
    Desole je ne maitrise pas le domaine. Mais sans tenir compte du Content-Type, j'obtiens la source suivante :
    Source
    country=France&region=Nice&from=04%2F17%2F2013&to=04%2F26%2F2013&currency=EUR et les parametres firebug suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Accept	application/json, text/javascript, */*; q=0.01
    ...
    Content-Length	77
    Content-Type	application/x-www-form-urlencoded; charset=UTF-8
    Donc après ça, c'est au niveau serveur que je transforme le message reçu en JSON ?


    EDIT : C'est vrai qu,il manque un bout de code lie a mon formulaire et qui récupère les valeur jcountry, etc ..

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 31
    Par défaut
    Un peu plus complet :

    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
     
    $("#submitButton").click(function(){
    sumbitForm($("#country").val(), $("#region").val(), $("#from").val(), $("#to").val(), $("#currency").val());
                    });
                });
     
     
    function sumbitForm(jcountry, jregion, jfrom, jto, jcurrency) {
     
    	  $.ajax({
    	      url: 'url',
                  type: 'POST',
                  data: {country : jcountry, region : jregion, from : jfrom, to : jto, currency : jcurrency},
                  //headers: {'Content-Type' : 'application/json' },//contentType: 'application/json', ou JSON.stringify({ 
    	      dataType: 'json',
                  success: function() {
    			  alert("success")
                              $.mobile.changePage("menu1.html");
                  },
                  error: function (xhr, ajaxOptions, thrownError) {
                              alert( "Error: " + xhr.status + "\n" +
                                     "Message: " + xhr.statusText + "\n" +
                                     "Response: " + xhr.responseText + "\n" + thrownError);
    			  $.mobile.changePage("menue2.html");
                          }
                      });
                }

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Donc après ça, c'est au niveau serveur que je transforme le message reçu en JSON ?
    Oui, par exemple en PHP avec json_ decode.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 31
    Par défaut
    Ce qui me perturbe, c'est qu'en utilisant le , j'obtiens au niveau de la source de firebug un format JSON.
    Pourquoi ?

Discussions similaires

  1. Remplacer Ajax.Update avec jQuery
    Par phpaide dans le forum jQuery
    Réponses: 3
    Dernier message: 11/02/2014, 15h45
  2. Ajax avec jQuery: envoi par POST retour en JSON
    Par band22 dans le forum jQuery
    Réponses: 1
    Dernier message: 14/10/2011, 10h54
  3. Envoyer des données en POST avec JQuery?
    Par john85 dans le forum ASP.NET MVC
    Réponses: 8
    Dernier message: 09/06/2011, 18h33
  4. Réponses: 11
    Dernier message: 03/05/2011, 00h22
  5. ajax simple avec jquery
    Par artotal dans le forum jQuery
    Réponses: 4
    Dernier message: 18/11/2008, 19h07

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