Fetch post avec les données du corps ne fonctionne pas params vide
Je suis en train de réécrire mon appel ajax pour récupérer:
Ajax:
$.post({
context: this,
url: "/api/v1/users",
data: {
user:
{
email: email,
password: password
}
}
}).done((user) => {
}).fail((error) => {
})
Fetch:
fetch('/api/v1/users', {
method: 'POST',
headers: {
"Content-Type": "application/json"
},
body: {
"user" :
{
"email" : email,
"password" : password
}
}
})
.then(res => {
if (res.status !== 200) { {
console.log("error")
})
} else {
res.json().then(data => {
console.log(data)
})
}
})
J'obtiens une erreur vide params ~ mauvais demande à partir de mon serveur.
J'ai aussi trouvé cette façon de faire, mais dans ce code ci-dessous j'obtiens une erreur: Unexpected token.
var payload = {
"user" :
{
"email" : email,
"password" : password
}
};
var data = new FormData();
data.append( "json", JSON.stringify( payload ) );
fetch('/api/v1/users', {
method: 'POST',
headers: {
"Content-Type": "application/json"
},
body: data
})
Comment puis-je réécrire la requête ajax pour récupérer?
Vous devez vous connecter pour publier un commentaire.
Suivi de ce sujet sur github: https://github.com/matthew-andrews/isomorphic-fetch/issues/34
La solution à ma question est d'utiliser le JSON.stringify de la fonction et de définir le Type de Contenu d'en-tête d'application/json. Pas assez sûr de savoir pourquoi la deuxième tentative dans ma question n'a pas de travail même si.
Officiel MDN Documentation:
Vous devriez essayer ceci:
chercher de l'API
travaillé de cette façon lors de l'envoi de
body
commejson
échoué.EDIT: Dans mon cas, le serveur n'a identifié le contenu par l'intermédiaire du formulaire de soumission de données. Le code n'a pas été écrit pour lire le corps de la requête json. Il est donc possible d'avoir un problème avec votre code côté serveur en tant que bien.
en-têtes: {"Content-Type": "application/json'} - déjà répondu