angular - & 号 JSON 和 Angular6
问题描述
尝试在我的服务中构建 URL 时,我遇到了 & 符号问题:
addPost(post: Post){
let json = JSON.stringify(post);
//let params = 'json='+json.replace('&','y');
let params = 'json='+json;
let headers = new Headers ({'Content-Type':'application/x-www-form-urlencoded'});
return this._http.post(this.url+'posts', params, {headers: headers})
.pipe(map((res: Response) => res.json()));
}
下图未替换 & 符号
如果我将 & 符号替换为“y”之类的任何字符,例如:
let params = 'json='+json.replace('&','y');
结果是这样的: json.replace
我怎样才能将 & 号作为字符传递?
谢谢你的时间。
解决方案
这是一个 POST,因此您的正文将作为正文而不是 URL 参数传递。
使用 URL 参数或男孩,HttpClient
他们会为您处理它们的序列化。在将它们传递给HttpClient
.
就像方法签名和 Angular 文档说的那样,只需将您的主体作为参数传递给http.post()
:
addPost(post: Post){
let headers = new Headers ({'Content-Type':'application/x-www-form-urlencoded'});
return this._http.post(this.url + '/posts', post, {headers: headers})
.pipe(map((res: Response) => res.json()));
}
不要事先将正文序列化为 JSON。另外值得注意的是,新的HttpClient
也将解析来自 JSON 的响应,因此根据您的版本,map(s => s.json())
不需要。
推荐阅读
- batch-file - 批处理文件 特定文件/快捷方式的副本
- mysql - 获取每个用户在特定月份的所有交易的总和
- java - Selenium 断言等于 Value1 或 Value2
- c++ - 多变量的一行输入
- ios - GMSAutocompleteViewController swift [GooglePlaces]
- javascript - 以 Html 形式连接用户输入并为其分配一个 ID,以便在 JavaScript 中提交
- java - JavaFx 布局方向
- python - 在 cpp 中嵌入 python:如何获取指向 python 函数(而不是 PyObject)的 C 指针?
- java - 在运行时在 JVisualVM 中更改应用程序的标题
- php - 防止元素在 php 文档中移动 -