在angular6中的JSON.stringfy中传递多个值

时间:2018-12-28 15:54:05

标签: angular angular6 angular6-json-schema-form

我尝试使用JSON.stringfy()将多个值传递给API。我不知道为什么我的第二个值没有过去。

这是我尝试的代码:

getUserDetails(email, password){
this.api="http://192.168.1.14/task/public/api/login";
this.http.post(this.api,JSON.stringify(email,password))
.subscribe(data =>
  {
    if(data !=null)
    {
      console.log("LoggedIn Sucess");
    }
    else{
      console.log("Login Failed");
    }
  })
}

3 个答案:

答案 0 :(得分:1)

JSON.stringify()方法将JavaScript对象或值转换为 JSON 字符串,如果指定了替换函数,则可以选择替换值,或者仅包括指定的属性,如果指定了替换数组。

JSON.stringify 顾名思义,将JavaScript 对象转换为字符串表示形式。

所以尝试一下:

getUserDetails(email, password){
this.api="http://192.168.1.14/task/public/api/login";
this.http.post(this.api,JSON.stringify({email: email, password: password}))
    .subscribe(data => {
        if(data != null) {
            console.log("loggedIn success");
        } else {
            console.log("loggedIn failed");
        }
    })
}

答案 1 :(得分:0)

那是正常的,只能使用一个值,实际上,现在您只收到“电子邮件”。

两个或多个输入的正确语法是

this.http.post(this.api,JSON.stringify([email,password]))

您将收到[电子邮件,密码]

答案 2 :(得分:0)

JSON.stringify 的名称建议将 JavaScript对象转换为字符串表示形式。最有可能与Web服务器交换日期。

此函数只需要一个必需的参数,即您要字符串化的对象。您获取电子邮件值而不是密码的原因是javascript忽略了第二个参数。

话虽如此,您可以将值以这种格式传递到数组对象中

JSON.stringify([email,password])

在这种情况下,您的变量应被字符串化为两个字符串值的数组,例如[“ some@emailadress.com”,“ somestring”]

另一种方法可以是对对象进行字符串化,例如

JSON.stringify({email, password})

在这种情况下,您的变量应字符串化为这样的javascript对象 {“电子邮件”:“ some@emailadress.com”,“密码”:“ somestring”}

您还可以像这样构造自己的JSON对象

JSON.stringify({emailaddress:email, passwordValue: password})

构造JavaScript对象的好处是,在服务器端可以接收带有名称的参数。

谢谢。