这是一个常见的问题。这个
+
URL使用字符分隔两个单词。为了使用
+
参数值中的字符,在将参数值作为URL的一部分添加之前,需要对其进行编码。Javascript/TypeScript提供
encodeURI()
为此目的而发挥作用。
以下是解决此问题的方法:
let mobile = encodeURI("+911234567890");
let text = encodeURI("1 + 2 = 3");
this.updateUser({"name":"ABC","mobile": mobile,"text":text});
public updateUser(myObj) {
const body = new HttpParams().set('user_object', JSON.stringify(myObj));
return this.http.post(url, body, {
headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8')
});
}
或者
您可以对updateUser()方法的内部进行编码:
this.updateUser({"name":"ABC","mobile": "+911234567890","text":"1 + 2 = 3"});
public updateUser(myObj) {
let encodedJson = encodeURI(JSON.stringify(myObj));
const body = new HttpParams().set('user_object', encodedJson);
return this.http.post(url, body, {
headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8')
});
}
或者
使用正则表达式替换
+
发送到服务器之前:
let jsonData = JSON.stringify(myObj);
jsonData = jsonData.replace(/\+/gi, '%2B');