221 votes

jQuery postant JSON

mise à jour: je voudrais faire passer l' var value sur le serveur

bonjour, même vieux, même vieux ... :)

J'ai un formulaire appelé <form id="testForm" action="javascript:test()"> et une zone de code appelés <code id="testArea"></code>

J'utilise ce code pour stringify et afficher les données dans la zone de code:

var formData = form2object('testForm');
document.getElementById('testArea').innerHTML = JSON.stringify(formData, null, '\t');
var value = JSON.stringify(formData, null, '\t');

Ce que je veux, c'est d'envoyer ces données à un fichier JSON. J'ai travaillé sur ce projet : http://ridegrab.com/profile_old/ et si vous appuyez sur Submit Query bouton vous permettra de voir la tête de la page de remplir.

Aussi je veux utiliser ce morceau de script pour envoyer des données:

    function authenticate(userName, password) {
    $.ajax
    ({
        type: "POST",
        //the url where you want to sent the userName and password to
        url: 'username:password@link to the server/update',
        dataType: 'json',
        async: false,
        //json object to sent to the authentication url
        data: '{"userName": "' + userName + '", "password" : "' + password + '"}',
        success: function () {

        alert("Thanks!"); 
        }
    })
}

Encore une fois, tout ce que je veux, c'est être en mesure d'envoyer que les données JSON pour le serveur. Mon serveur est configuré pour update or POST les données au bon endroit.

296voto

teknopaul Points 1102

Vous postez JSON comme ça

 $.ajax(url, {
    data : JSON.stringify(myJSObject),
    contentType : 'application/json',
    type : 'POST',
    ...
 

si vous transmettez un objet en tant que settings.data, jQuery le convertira en paramètres de requête et l'enverra par défaut avec le type de données application / x-www-form-urlencoded; charset = UTF-8, probablement pas ce que vous voulez

251voto

dorkitude Points 4484

Vos "données" doivent être un objet Javascript stratifié:

 data: JSON.stringify({ "userName": userName, "password" : password })
 

Ou, pour envoyer les données du formulaire, transmettez-le formData , comme ceci:

 data: JSON.stringify(formData)
 

Vous trouverez également une réponse plus détaillée à une question similaire ici: Jquery Ajax Posting json to webservice

-6voto

Abubakar Points 11

J'ai essayé une manière différente de poster JSON au serveur. Il n'y a pas besoin de changements et d'application de fonction. Pas besoin de définir les propriétés contentType, dataType et async.

 function authenticate(userName, password) {
   var jsonData = '{"userName": "' + userName + '", "password" : "' + password + '"}'
   $.ajax
   ({
      type: "POST",
      //the url where you want to sent the userName and password to
      url: 'username:password@link to the server/update',
      //json object to sent to the authentication url
      data:'json='+jsonData ,
      success: function () {

       alert("Thanks!"); 
      }
  })
}
 

côté serveur, obtenez simplement le nom de la variable json avec $_POST comme ceci.

   if(isset($_POST['json'])){
      //do somthing here.
  }
 

Par cette méthode, vous pouvez publier d’énormes json avec plusieurs objets et tableaux imbriqués.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X