Eh bien, voici l'histoire:
J'ai quelques données à envoyer au serveur, mais elles doivent d'abord être converties en JSON dataType.
J'ai fait un tel appel ajax:
$.ajax({
url: url, // the url I want to post to.
type: 'POST',
contenttype:'application/json; charset=utf-8',
beforeSend: //some HTTP basic auth stuff
data: {
name:'test',
key:'foo',
key2:'bar'
},
dataType:'JSON'
});
en gros, je m'attends à ce que les données que j'envoie au serveur soient:
[name:test,key:foo,key2:bar]
mais ce que j'ai été:
name=test&key=foo&key2=bar
Qu'est-ce que j'ai manqué? Comment puis-je obtenir ces données dans JSON?
var data = {'bob':'foo','paul':'dog'};
$.ajax({
url: url,
type: 'POST',
contentType:'application/json',
data: JSON.stringify(data),
dataType:'json'
});
/** Ajoutée **/
Ce qui précède ne fait rien avec la réponse du serveur si vous devez faire quelque chose, un rappel sera appelé lorsque le serveur aura répondu.
var data = {'bob':'foo','paul':'dog'};
$.ajax({
url: url,
type: 'POST',
contentType:'application/json',
data: JSON.stringify(data),
dataType:'json',
success: function(data){
//On ajax success do this
alert(data);
},
error: function(xhr, ajaxOptions, thrownError) {
//On error do this
if (xhr.status == 200) {
alert(ajaxOptions);
}
else {
alert(xhr.status);
alert(thrownError);
}
}
});
J'ai eu le même problème. Vous ne pouvez pas envoyer un objet en tant que "données", vous devez le stringifier. Essayez plutôt ceci, avec votre objet stringifié:
$.ajax({
url: url,
type: 'POST',
contentType:'application/json',
data: '{
name:"test",
key:"foo",
key2:"bar"
}',
dataType:'json'
});
Essayez ceci: http://www.abeautifulsite.net/blog/2008/05/postjson-for-jquery/
C'est beaucoup plus court:
$.post(url, data, function(response) {
// Do something with the response
}, 'json');
De plus, necesary peut créer un paramètre et attribuer la valeur avec JSON.stringify
....
data: "jsonString="+JSON.stringify(data),
...
Je conviens que les données doivent être converties en une chaîne JSON, non seulement pour accepter les configurations dataType
et contentType
, mais surtout pour satisfaire le serveur.
data: JSON.stringify(data),
dataType:'json'