Saya mencoba mengirim permintaan POST dari Angular 4 ke backend Laravel saya.
My LoginService memiliki metode ini:
login(email: string, password: string) {
return this.http.post(`http://10.0.1.19/login`, { email, password })
}
Saya berlangganan metode ini di LoginComponent saya:
.subscribe(
(response: any) => {
console.log(response)
location.reload()
},
(error: any) => {
console.log(error)
})
Dan ini adalah metode backend Laravel saya:
...
if($this->auth->attempt(['email' => $email, 'password' => $password], true)) {
return response('Success', 200);
}
return response('Unauthorized', 401);
Alat pengembang Chrome saya mengatakan bahwa permintaan saya berhasil dengan 200 kode status. Tetapi kode Angular saya memicu error
pemblokiran dan memberi saya pesan ini:
Kegagalan http selama parsing untuk http://10.0.1.19/api/login
Jika saya mengembalikan array kosong dari backend saya, itu berfungsi ... Jadi Angular mencoba mengurai respons saya sebagai JSON? Bagaimana saya bisa menonaktifkan ini?
Anda juga harus memeriksa JSON Anda (bukan di DevTools, tetapi di backend). Angular HttpClient mengalami kesulitan mengurai JSON dengan
\0
karakter dan DevTools akan mengabaikannya, jadi cukup sulit ditemukan di Chrome.Berdasarkan artikel ini
sumber
Saya memiliki masalah yang sama dan penyebabnya adalah bahwa pada saat mengembalikan string di backend Anda (pegas), Anda mungkin kembali sebagai pengembalian "pegas bekas"; Tapi ini tidak diurai sesuai dengan musim semi. Sebagai gantinya gunakan return "\" spring used \ ""; -Tepat keluar
sumber
Saya menghadapi masalah yang sama dalam aplikasi Angular saya. Saya menggunakan RocketChat REST API di aplikasi saya dan saya mencoba menggunakan
rooms.createDiscussion
, tetapi sebagai kesalahan seperti di bawah ini.Saya telah mencoba beberapa hal seperti mengubah
responseType: 'text'
tetapi tidak ada yang berhasil. Pada akhirnya saya dapat menemukan masalahnya ada pada instalasi RocketChat saya. Seperti yang disebutkan dalam log perubahan RocketChat , APIrooms.createDiscussion
telah diperkenalkan di versi 1.0.0 sayangnya saya menggunakan versi yang lebih rendah.Saran saya adalah memeriksa REST API berfungsi dengan baik atau tidak sebelum Anda menghabiskan waktu untuk memperbaiki kesalahan dalam kode Angular Anda. Saya menggunakan
curl
perintah untuk memeriksa itu.Di sana juga saya mendapatkan HTML yang tidak valid sebagai tanggapan.
Alih-alih respons JSON yang valid sebagai berikut.
Jadi setelah memperbarui ke RocketChat terbaru, saya dapat menggunakan REST API yang disebutkan.
sumber