jQuery publiant json valide dans le corps de la requête

Ainsi, selon les documents jQuery Ajax , il sérialise les données sous la forme d’une chaîne de requête lors de l’envoi des requêtes, mais la définition de processData:false devrait me permettre d’envoyer un JSON réel dans le corps. Malheureusement, j’ai du mal à déterminer en premier, si cela se produit et en second lieu à quoi ressemble l’object envoyé au serveur. Tout ce que je sais, c’est que le serveur n’parsing pas ce que j’envoie.

Lorsque vous utilisez un client http pour publier un object littéral {someKey:'someData'} , cela fonctionne. Mais lorsque jQuery est utilisé avec data: {someKey:'someData'} , il échoue. Malheureusement, lorsque j’parsing la requête dans Safari, il est dit que la charge du message est [object Object] … great … et dans Firefox, la publication est vide …

Lorsque vous enregistrez le contenu du corps du côté Java, il obtient littéralement [object Object] . Comment peut-on envoyer des données REEL JSON?

Quelqu’un at-il eu une expérience avec un service Java sérialisant les données JSON dans le corps de la requête, avec la requête envoyée par jQuery?

BTW voici la demande complète $ .ajax:

 $.ajax({ contentType: 'application/json', data: { "command": "on" }, dataType: 'json', success: function(data){ app.log("device control succeeded"); }, error: function(){ app.log("Device control failed"); }, processData: false, type: 'POST', url: '/devices/{device_id}/control' }); 

Une requête JSON réelle ressemblerait à ceci:

 data: '{"command":"on"}', 

Où vous envoyez une chaîne JSON réelle. Pour une solution plus générale, utilisez JSON.ssortingngify() pour sérialiser un object en JSON, comme ceci:

 data: JSON.ssortingngify({ "command": "on" }), 

Pour prendre en charge les anciens navigateurs ne disposant pas de l’object JSON , utilisez json2.js qui l’appenda.


Ce qui se passe actuellement est que vous avez processData: false , il envoie essentiellement ceci: ({"command":"on"}).toSsortingng() qui est [object Object] … ce que vous voyez dans votre requête.