Comment puis-je utiliser JQuery pour publier des données JSON?
Je tiens à poster Json d'un service web sur le même serveur. Mais je ne sais pas comment poster Json à l'aide de JQuery. J'ai essayé avec ce code:
$.ajax({
type: 'POST',
url: '/form/',
data: {"name":"jonas"},
success: function(data) { alert('data: ' + data); },
contentType: "application/json",
dataType: 'json'
});
Mais en utilisant JQuery code les données ne sont pas reçues comme Json sur le serveur. C'est les données attendues sur le serveur: {"name":"jonas"}
mais à l'aide de JQuery le serveur de recevoir des name=jonas
. Ou, en d'autres mots, c'est "urlencoded" des données Json.
Est-il possible d'afficher les données au format Json au lieu de urlencoded données à l'aide de JQuery? Ou dois-je utiliser un manuel requête ajax?
Vous devez vous connecter pour publier un commentaire.
Vous êtes de passage d'un objet, pas une chaîne JSON. Lorsque vous transmettez un objet, jQuery utilise
$.param
pour sérialiser l'objet dans des paires nom-valeur.Si vous transmettez les données sous forme de chaîne, il ne sera pas activé:
$.post
pour qui? Il est (un) seul un wrapper pour$.ajax
et (b) incapable de faire ce qui est nécessaire (c'est à dire lacontentType
de la propriété).error: function(jqXhr, status, error) { alert(status + ': ' + error);
à la solution ci-dessus afin de signaler tout problème au navigateur.console.log
, mais le navigateur outils de développement vous donnera des informations plus utiles sans rien faire. Leerror
de rappel doit seulement être utilisé pour activer le programme pour répondre à une erreur.Base sur lonesomeday de réponse, j'ai créer un
jpost
qui enveloppe certains paramètres.Utilisation:
J'ai essayé de Ninh Pham est une solution, mais cela n'a pas fonctionné pour moi jusqu'à ce que j'ai modifié - voir ci-dessous. Supprimer contentType et de ne pas encoder vos données json
La réponse sommet a bien fonctionné mais je suggère enregistrement de vos données JSON dans une variable avant de poster c'est un peu plus propre lors de l'envoi d'une forme longue ou de traitement de données volumineuses en général.
JS:
À l'aide de
Promise
et de vérifier si labody
objet est un JSON valide. Si ce n'est une Promessereject
sera retourné.