'+'字符在HttpParams angular 6中转换为空间

维奈·沙玛(Vinay Sharma)

我有一个JSON对象,并使用HttpParams传递它,但它隐蔽+到空间并发送到后端。我尝试了所有可能的方法,但是没有人为JSONObject字符串解决它。

this.updateUser({"name":"ABC","mobile": "+911234567890","text":"1 + 2 = 3"});

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')
    });
  }

当我在网络中检查时,包含+字符的对象会自动转换为空间。

费萨尔

这是一个普遍的问题。+URL使用字符分隔两个单词。为了+在参数值中使用字符,您需要先对参数值进行编码,然后再将其添加为URL的一部分。Javascript / TypeScript提供了encodeURI()用于该特定目的功能。

URL编码将字符转换为可以通过Internet传输的格式。[w3Schools参考]

这是解决此问题的方法:

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');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将字符串转换为Angular中的函数调用

未设置Angular 5 HttpParams

Angular HttpParams对象为空

在SQL Server中转换为ASCII字符

数组的数据在 Jquery 中转换为字符

在JavaScript中转换为字符串

打字稿如何在angular2中转换为javascript?

Angular-6:将字符串转换为自定义对象的数组

为什么HttpParams在angular 4.3中不能在多行中工作

如何在发布http请求Typescript / Angular 7中的HttpParams中传递布尔值

如何使用 rxjs Observable 在 Angular Post 请求中更新 HttpParams 中的值

HttpParams与Angular 6中的Put和Post将返回类型更改为Observable <HttpEvent <T >>一起使用

如何以类似于Angular中HttpHeaders的紧凑方式设置HttpParams

在angular2中使用HttpParams的Http返回404错误

Angular 5多个逗号分隔的HttpParams

Angular-HttpParams 追加未追加

Angular2 HttpParams未按预期发送

javax.ws.rs.core.Response在Java1.6中转换为字符串

检查字符向量中的元素是否可以在 R 中转换为数字

字符串在swift 4.1中转换为双精度

在Pandas itertuples()中,字符串'class'在namedtuple中转换为'_1'

从字符串中获取日期并在 Flutter Dart 中转换为日期对象

在字符中拆分间隔日期并在 R 中转换为日期

测试在 Angular 中转换为承诺的模拟 Observable

您可以在Angular中转换为子指令吗?

如何将对象数组转换为 Angular 中的字符串数组以显示在 Angular 材料表中?

转换[字符串]?在Swift中转换为String

Angular如何将文本字符串转换为打字稿中的html对象

将点分隔的字符串转换为 Angular/Typescript 中的嵌套 JSON 对象