Próbuję wysłać żądanie POST z Angular 4 do mojego zaplecza Laravel.
Moja usługa logowania ma następującą metodę:
login(email: string, password: string) {
return this.http.post(`http://10.0.1.19/login`, { email, password })
}
Subskrybuję tę metodę w moim komponencie LoginComponent:
.subscribe(
(response: any) => {
console.log(response)
location.reload()
},
(error: any) => {
console.log(error)
})
A to jest moja metoda backendu Laravel:
...
if($this->auth->attempt(['email' => $email, 'password' => $password], true)) {
return response('Success', 200);
}
return response('Unauthorized', 401);
Moje narzędzia dla programistów Chrome mówią, że moja prośba zakończyła się sukcesem z 200 kodami stanu. Ale mój kod Angular wyzwala error
blok i wyświetla następujący komunikat:
Błąd HTTP podczas analizowania adresu http://10.0.1.19/api/login
Jeśli zwrócę pustą tablicę z mojego zaplecza, działa ... Więc Angular próbuje przeanalizować moją odpowiedź jako JSON? Jak mogę to wyłączyć?
Powinieneś także sprawdzić JSON (nie w DevTools, ale na zapleczu). Angular HttpClient mający trudności z analizowaniem JSON ze
\0
znakami i DevTools zignoruje wtedy, więc trudno go zauważyć w Chrome.Na podstawie tego artykułu
źródło
Miałem ten sam problem, a przyczyna była taka, że w momencie zwracania łańcucha w Twoim zapleczu (sprężynie) mógłbyś zwracać jako powrót „używana sprężyna”; Ale to nie jest analizowane zgodnie z wiosną. Zamiast tego użyj powrotu "\" użyta sprężyna \ ""; -Odejdź
źródło
Miałem ten sam problem w mojej aplikacji Angular. Używałem RocketChat REST API w mojej aplikacji i próbowałem użyć
rooms.createDiscussion
, ale jako błąd, jak poniżej.Próbowałem kilku rzeczy, takich jak zmiana,
responseType: 'text'
ale żadna z nich nie działała. W końcu udało mi się znaleźć problem z moją instalacją RocketChat. Jak wspomniano w dzienniku zmian RocketChat, APIrooms.createDiscussion
zostało wprowadzone w wersji 1.0.0, niestety używałem niższej wersji.Sugeruję, aby sprawdzić, czy REST API działa dobrze lub nie, zanim poświęcisz czas na naprawienie błędu w kodzie Angular. Użyłem
curl
polecenia, żeby to sprawdzić.Tam również otrzymałem nieprawidłowy kod HTML jako odpowiedź.
Zamiast prawidłowej odpowiedzi JSON w następujący sposób.
Tak więc po aktualizacji do najnowszego RocketChat mogłem korzystać ze wspomnianego REST API.
źródło