J'essaye d'envoyer une demande POST d'Angular 4 à mon backend Laravel.
Mon LoginService a cette méthode:
login(email: string, password: string) {
return this.http.post(`http://10.0.1.19/login`, { email, password })
}
Je m'abonne à cette méthode dans mon LoginComponent:
.subscribe(
(response: any) => {
console.log(response)
location.reload()
},
(error: any) => {
console.log(error)
})
Et voici ma méthode de backend Laravel:
...
if($this->auth->attempt(['email' => $email, 'password' => $password], true)) {
return response('Success', 200);
}
return response('Unauthorized', 401);
Mes outils de développement Chrome indiquent que ma demande a été un succès avec un code d'état 200. Mais mon code Angular déclenche le error
bloc et me donne ce message:
Échec HTTP lors de l'analyse de http://10.0.1.19/api/login
Si je retourne un tableau vide de mon backend, cela fonctionne ... Donc Angular essaie d'analyser ma réponse en JSON? Comment puis-je désactiver cela?
Vous devriez également vérifier votre JSON (pas dans DevTools, mais sur un backend). Angular HttpClient ayant du mal à analyser JSON avec des
\0
caractères et DevTools l'ignorera alors, il est donc assez difficile à repérer dans Chrome.Basé sur cet article
la source
J'ai eu le même problème et la cause était qu'au moment de renvoyer une chaîne dans votre backend (ressort), vous pourriez revenir en tant que retour "spring used"; Mais ce n'est pas analysé correctement en fonction du printemps. Utilisez à la place le retour "\" spring used \ ""; -Paix
la source
J'étais confronté au même problème dans mon application Angular. J'utilisais l'API REST RocketChat dans mon application et j'essayais d'utiliser le
rooms.createDiscussion
, mais comme une erreur comme ci-dessous.J'ai essayé deux choses comme changer le
responseType: 'text'
mais aucune d'elles n'a fonctionné. À la fin, j'ai pu trouver que le problème était lié à mon installation RocketChat. Comme mentionné dans le journal des modifications de RocketChat, l'API arooms.createDiscussion
été introduite dans la version 1.0.0, malheureusement, j'utilisais une version inférieure.Ma suggestion est de vérifier que l'API REST fonctionne correctement ou non avant de passer du temps à corriger l'erreur dans votre code angulaire. J'ai utilisé la
curl
commande pour vérifier cela.Là aussi, je recevais un HTML invalide en guise de réponse.
Au lieu d'une réponse JSON valide comme suit.
Donc, après la mise à jour vers la dernière RocketChat, j'ai pu utiliser l'API REST mentionnée.
la source