Bien que je sache que de nombreuses architectures comme ASP.NET MVC ont une fonctionnalité intégrée pour gérer JSON.stringify en tant que contentType, ma situation est un peu différente et peut-être que cela pourrait aider quelqu'un à l'avenir. Je sais que cela m'aurait permis d'économiser des heures !
Comme mes requêtes http sont gérées par une API CGI d'IBM (environnement AS400) sur un sous-domaine différent, ces requêtes sont cross origin, d'où le jsonp. J'envoie en fait mon ajax via un (des) objet(s) javascript. Voici un exemple de mon POST ajax :
var data = {USER : localProfile,
INSTANCE : "HTHACKNEY",
PAGE : $('select[name="PAGE"]').val(),
TITLE : $("input[name='TITLE']").val(),
HTML : html,
STARTDATE : $("input[name='STARTDATE']").val(),
ENDDATE : $("input[name='ENDDATE']").val(),
ARCHIVE : $("input[name='ARCHIVE']").val(),
ACTIVE : $("input[name='ACTIVE']").val(),
URGENT : $("input[name='URGENT']").val(),
AUTHLST : authStr};
//console.log(data);
$.ajax({
type: "POST",
url: "http://www.domian.com/webservicepgm?callback=?",
data: data,
dataType:'jsonp'
}).
done(function(data){
//handle data.WHATEVER
});
7 votes
En
dataType
n'a aucune incidence sur la manière dont les données sont envoyées. Il spécifie simplement le type de données que vous attendez. retourné par l'appel. Si vous souhaitez indiquer au serveur le type de données que vous spécifiez dans l'élémentdata
vous devez définir la propriétécontentType
propriété similaire àcontentType: "application/json"
0 votes
Merci de cette précision. Mais dans ce cas, pourquoi dois-je spécifier le type de réponse côté client si le serveur fournit un en-tête content-type dans la réponse ?
2 votes
Vous n'avez pas avoir pour le spécifier, jQuery essaiera par défaut de faire une supposition intelligente basée sur le type MIME de la réponse. Cependant, en le spécifiant, vous indiquez explicitement à jQuery le type que vous attendez du serveur et jQuery tentera de convertir la réponse en un objet de ce type. Si vous ne le précisez pas et que vous laissez jQuery deviner, jQuery risque de convertir la réponse dans un format inattendu, même si vous avez envoyé du JSON depuis le serveur. Consultez la documentation pour plus de détails sur le type de données (dataType) : api.jquery.com/jQuery.ajax
0 votes
Duplicata possible de Jquery Ajax Posting json to webservice