当我提交常规 HTML 表单时,我的后端服务(用 Laravel 编写)可以理解 POST 参数。
我检查了浏览器中的请求标头。请求参数为:
Form Data:
_token:v4xCN9fHMpZhoQMGHfbqI01XDsQ1nCxYhy3RDrw5
username:root
password:123456
然后我编写了以下方法通过 angular5 向服务器发送 post 请求HttpClient
:
public post(url: string, data: any): Observable<any[]> {
const headers = new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
});
return this.http.post( url, data,
{
headers: headers
}
).pipe(
tap(success => this.handleSuccess(success)),
catchError(this.handleError())
);
}
但是浏览器会显示不同的表单数据,如下所示:
Form Data:
{"username":"asdf","password":"asdf","_token":"mytoken"}:
我将以下对象作为数据传递:
data = {
username: 'asdf',
password: 'asdf',
_token: 'mytoken'
};
但是服务器( Laravel )无法理解请求参数。请让我知道它有什么问题?
你data
应该是一个FormData
实例而不是一个普通对象(这将是 json 编码的)。例子:
const data = new FormData();
data.append("username", "asdf");
data.append("password", "asdf");
data.append("_token", "mytoken");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句