如何通过在Typescript

时间:2018-09-07 14:55:03

标签: javascript angular

我是Angular 4的新手。在这里,我试图将字符串传递给API调用。 目前,我只是将字符序列分配给字符串变量,然后将其传递给API URL。

这里的问题是,当我在API中收到字符串时,它会丢失字符串中的+,并且每个+都由一个空格代替。

所以我应该如何将带有+符号的字符串传递给API。

app.component.ts

var isValidString = "AhU29yCXdtoaNyQ8rhUBZMz0MieMNBTUaaA04hO+pGzd/iK01sQx6ckMi8LqCdyphShlBt9QhLtCizcUsy708eU90GD7Qg==";
            this.CartdataService.validateString(isValidString).subscribe(data => {
              console.log(data);
            });

这里的字符串中有一个+,当我在API函数中收到它时,该字符串不存在。

Angular.Service:

validateString(isValidString){
  return this.http.get(this.validate_User_Password_URL = this.SERVER_URL+`/api/ECOMAPI/validateUserPassword/?mValidateString=${validateString}`);
}

在API

 public async Task<HttpResponseMessage> validvalidateUserPassword(string myString)
        {
          if (myString) != " ")
          {
            .............
          }
       }

在调试myString时,字符串具有空格而不是+

谁能帮我解决这个问题。

3 个答案:

答案 0 :(得分:0)

您可以使用encodeURI和decodeURI

public enum DisplayStatus {
    [Display(Name = "ACTIVE")]
    Active= 1,
    [Display(Name = "DELETED")]
    Deleted = 11
}
public class Vehicle_DTO {
    [EnumDataType(typeof(DisplayStatus))]
    [Display(Name = "STATUS")]
    public int Status { get; set; }
}
// ...
gridControl1.DataSource = new List<Vehicle_DTO> {
    new Vehicle_DTO() { Status = 1 },
    new Vehicle_DTO() { Status = 11 },
    new Vehicle_DTO() { Status = 11 },
};

您的代码

var encoded = encodeURI(uri);

移至您的API代码:

var isValidString = encodeURI("AhU29yCXdtoaNyQ8rhU+pGzd/i......");
// now call the service method with above encoded string

答案 1 :(得分:0)

您是否尝试过对字符串进行url编码并检查其是否有效? 您可以使用encodeURIComponent()来编码特殊字符。

var isValidString = "AhU29yCXdtoaNyQ8rhUBZMz0MieMNBTUaaA04hO+pGzd/iK01sQx6ckMi8LqCdyphShlBt9QhLtCizcUsy708eU90GD7Qg==";
var encoded = encodeURIComponent(isValidString);

// then append the encoded one to the url instead of the original string

答案 2 :(得分:0)

我非常确定,如果您使用HttpParams而不是自己组装字符串,Angular会为您完成编码工作。像这样

let str = "adam+eve"
let params = new HttpParams().set("isValidString", str);
return this.http.get("http://foo.bar", {params}) as Observable<Any>

应该会导致呼叫

  

http://foo.bar?validString=adam+eve