web-dev-qa-db-fra.com

Publier JSON avec JQuery et définir le type de contenu HTTP - 'application/json'

J'utilise jquery pour publier des données Json sur le serveur. Cependant, lorsque je fais une demande de publication comme ci-dessous,

    $.ajax({
                type        :   'POST'  ,
                url         :   uri,
                data        :   jsonStrJson,
                contentType :   'application/json',
                success     :   successFunction
        });

Le type de contenu de l'en-tête de la requête http n'est pas "application/json" même si je poste un objet json.

Puisqu'il ne s'agit pas de applcation/json, le serveur ne traite pas le requset et renvoie 415.

Est-il possible de définir l'en-tête à l'aide de l'API javascript ou jquery?

10
linux developer

Pouvez-vous essayer ceci,

$.ajax({
    beforeSend: function(xhrObj){
        xhrObj.setRequestHeader("Content-Type","application/json");
        xhrObj.setRequestHeader("Accept","application/json");
    },
    type: "POST",
    url: uri,       
    data: jsonStrJson,               
    dataType: "json",
    success: function(json){
       console.log(json);
    }
});
25
Krish R

"contentType" à la place "contentTYpe" devrait également résoudre le problème. ;)

5
andreas

Également pour définir les paramètres d'en-tête de requête http, vous pouvez essayer cette approche:

$.ajax({
       type        :   'POST'  ,
       url         :   uri,
       data        :   jsonStrJson,
       headers     : { 'Content-Type': 'application/json' }, //this line
       success     :   successFunction
        });
0