Я пытаюсь отправить запрос POST из Angular 4 на мой сервер Laravel.
Мой LoginService имеет этот метод:
login(email: string, password: string) {
return this.http.post(`http://10.0.1.19/login`, { email, password })
}
Я подписываюсь на этот метод в моем LoginComponent:
.subscribe(
(response: any) => {
console.log(response)
location.reload()
},
(error: any) => {
console.log(error)
})
А это мой бэкэнд-метод Laravel:
...
if($this->auth->attempt(['email' => $email, 'password' => $password], true)) {
return response('Success', 200);
}
return response('Unauthorized', 401);
Мои инструменты разработчика Chrome говорят, что мой запрос был успешным с кодом состояния 200. Но мой код Angular запускает error
блок и дает мне это сообщение:
Ошибка HTTP при разборе http://10.0.1.19/api/login
Если я верну пустой массив из своего бэкэнда, он сработает ... Значит, Angular пытается проанализировать мой ответ как JSON? Как я могу это отключить?
У меня была та же проблема, и причина заключалась в том, что во время возврата строки в вашем бэкэнде (пружине) вы могли возвращаться как возврат «используется пружина»; Но это не правильно разбирается по весне. Вместо этого используйте return "\" использованная пружина \ ""; -Pease out
источник
Вы также должны проверить свой JSON (не в DevTools, а на бэкэнде). Angular HttpClient с трудом разбирает JSON с
\0
символами, а DevTools игнорирует его, поэтому его довольно сложно обнаружить в Chrome.На основе этой статьи
источник
Я столкнулся с той же проблемой в моем приложении Angular. Я использовал REST API RocketChat в своем приложении, и я пытался использовать
rooms.createDiscussion
, но как ошибку, как показано ниже.Я пробовал несколько вещей, например, изменить,
responseType: 'text'
но ни одна из них не сработала. В конце концов я обнаружил, что проблема связана с моей установкой RocketChat. Как упоминалось в журнале изменений RocketChat, APIrooms.createDiscussion
был представлен в версии 1.0.0, к сожалению, я использовал более низкую версию.Я предлагаю проверить, работает ли REST API нормально или нет, прежде чем тратить время на исправление ошибки в коде Angular. Я использовал
curl
команду, чтобы проверить это.Там я также получил неверный HTML в качестве ответа.
Вместо действительного ответа JSON, как показано ниже.
Итак, после обновления до последней версии RocketChat я смог использовать упомянутый REST API.
источник