web-dev-qa-db-fra.com

JQuery Post envoie des données de formulaire et non JSON

Essayer d'envoyer json. Voici ma fonction:

var object = ... ;

$.ajax({
      type: 'POST',
      url: '<url>',
      contentType: 'application/json; charset=utf-8',
      dataType: 'json',
      data: object
    });

Mais chaque fois que je vérifie Chrome, il l'envoie toujours en tant que paramètres de requête:

Request Payload:
startDate=Wed+Dec+19+2012+19%3A00%3A00+GMT-0500+(EST)&endDate=Thu+Dec+20+2012+19%3A00%3A00+GMT-0500+(EST)&

Comment puis-je l'envoyer en JSON?

42
Jason

Avec JSON.stringify(object)

Échantillon:

$.ajax({
    type: 'POST',
    url: '<url>',
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    data: JSON.stringify(object)
});

Remarque JSON.stringify n'est pas pris en charge dans tous les navigateurs ( http://caniuse.com/#feat=json ), en particulier les navigateurs IE7 et inférieurs.

Si vous devez également prendre en charge ce navigateur, vous pouvez utiliser cette bibliothèque Javascript: https://github.com/douglascrockford/JSON-js

69
Stefan

Stringify utilisant JSON.stringify(object)

Modifiez le champ data en:

...
data: JSON.stringify(object),
...

La façon dont vous le faites, IMO, jQuery voit le paramètre comme un dictionnaire (paires clé-valeur) et construit une chaîne codée en centile à partir de cela; et donc vous voyez cette sortie.

4
UltraInstinct