首页 > 解决方案 > & 号 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()));
    }

让参数 = 'json='+json;

下图未替换 & 符号

如果我将 & 符号替换为“y”之类的任何字符,例如:

let params = 'json='+json.replace('&','y');

结果是这样的: json.replace

我怎样才能将 & 号作为字符传递?

谢谢你的时间。

标签: angularangular6

解决方案


这是一个 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())不需要。


推荐阅读