Ich versuche, eine POST-Anfrage von Angular 4 an mein Laravel-Backend zu senden.
Mein LoginService hat diese Methode:
login(email: string, password: string) {
return this.http.post(`http://10.0.1.19/login`, { email, password })
}
Ich abonniere diese Methode in meiner LoginComponent:
.subscribe(
(response: any) => {
console.log(response)
location.reload()
},
(error: any) => {
console.log(error)
})
Und das ist meine Laravel-Backend-Methode:
...
if($this->auth->attempt(['email' => $email, 'password' => $password], true)) {
return response('Success', 200);
}
return response('Unauthorized', 401);
Meine Chrome-Entwicklungstools besagen, dass meine Anfrage mit 200 Statuscodes erfolgreich war. Aber mein Winkelcode löst den error
Block aus und gibt mir folgende Meldung:
HTTP-Fehler beim Parsen für http://10.0.1.19/api/login
Wenn ich ein leeres Array von meinem Backend zurückgebe, funktioniert es ... Also versucht Angular, meine Antwort als JSON zu analysieren? Wie kann ich das deaktivieren?
quelle
Sie sollten auch JSON überprüfen (nicht in DevTools, sondern in einem Backend). Angular HttpClient, der es schwer hat, JSON mit
\0
Zeichen und DevTools zu analysieren, wird dann ignoriert, so dass es in Chrome ziemlich schwer zu erkennen ist.Basierend auf diesem Artikel
quelle
Ich hatte das gleiche Problem und die Ursache war, dass Sie zum Zeitpunkt der Rückgabe eines Strings in Ihrem Backend (spring) möglicherweise als return "spring used" zurückkehren. Aber das wird laut Frühling nicht richtig analysiert. Verwenden Sie stattdessen return "" spring used ""; -Entspann dich
quelle
Ich hatte das gleiche Problem in meiner Angular-Anwendung. Ich habe die RocketChat REST-API in meiner Anwendung verwendet und versucht, die zu verwenden
rooms.createDiscussion
, jedoch als Fehler wie unten.Ich habe ein paar Dinge ausprobiert, wie das Ändern,
responseType: 'text'
aber keines davon hat funktioniert. Am Ende konnte ich feststellen, dass das Problem bei meiner RocketChat-Installation lag. Wie im RocketChat-Änderungsprotokoll erwähnt, wurde die APIrooms.createDiscussion
in der Version 1.0.0 eingeführt. Leider habe ich eine niedrigere Version verwendet.Mein Vorschlag ist, zu überprüfen, ob die REST-API ordnungsgemäß funktioniert oder nicht, bevor Sie Zeit damit verbringen, den Fehler in Ihrem Angular-Code zu beheben. Ich habe den
curl
Befehl verwendet, um das zu überprüfen.Auch dort bekam ich als Antwort einen ungültigen HTML-Code.
Anstelle einer gültigen JSON-Antwort wie folgt.
Nach dem Update auf den neuesten RocketChat konnte ich die erwähnte REST-API verwenden.
quelle