我寫一個login 程式。我試了BACKEND 程式是沒有問題,但是我怎樣去知道angular發出的資料,backend 程式,是否已經接收了?
以下是我的CODE:
userlogin()
{
const options = { responseType: 'text' as 'json'};
const logindata = new FormData();
const email = this.login.value.email;
const password = this.login.value.password;
console.log(this.login.value.email);
console.log(this.login.value.password);
this.http.post('http://127.0.0.1/library/login.php', {email, password}, options)
.pipe(
catchError(error => of(error)),
map(user => {
console.log(user);
}));
thank you very much.
http client 在發出後
好像是需要使用subscribe來取得結果
EX:
this.http.get('xxx').pipe(...).subscribe(
success => { console.log(status 200 , 304 ... ? ) },
error => { console.log(status 4xx 5xx ... ?)
);
1個讚
另外一個可以檢查的地方是瀏覽器的開發者工具->Netowrking,這邊也可以檢視發出的 xhr request 的內容
我根據你的方法去查找為麼不傳送資料去API,我在"開發者工具"->“Netowrking”-> “Preview"裏,我看見以下資料。
{websocket: true, origins: [”:"], cookie_needed: false, entropy: 1217316004}
這樣是否不能傳送資料去backend program?
thank you very much.
你應該要看到你呼叫 api 的那個相關的 request. 這個看起來不是打 API 的請求
是不是要用
const logindata = new FormData();
logindata.append(‘email’, this.login.value.email);
logindata.append(‘password’, this.login.value.password);
this.http.post(‘http://127.0.0.1/library/login.php’, logindata, options).subscribe(
apiuserdata => console.log(apiuserdata)
);
才能傳送data?
我在網上很多網頁都是用this.http.post(‘http://127.0.0.1/library/login.php’,{這裏的資料是不是要JSON格式?} , options)
thank you very much.
Angular 內的 httpClient post 預設是吃 json 格式,但也是要看後端吃怎樣格式的資料
我自己是這樣子寫就可以通了
const url = 'https://.....';
const postBody = {xx:123};
this.http.post(url, postbody).subscribe();
我自己覺得用 reportProgress: true 應該比較安全,如果傳回來的http status = 200,那就確定backend有收到了。
const req = new HttpRequest('post', url, data, {
reportProgress: true,
});
return this.http.request(req).pipe(
map((event: HttpEvent<any>) => {
return event
})
)
Kevin
10
其實 httpClient 本身有針對 request 發生錯誤時有做些處理,相關文件連結如下
1個讚