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

Passing multiple values in JSON.stringfy in angular6

我尝试使用 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");
    }
  })
}

这是正常的,它只适用于一个值,事实上现在您只收到 "email"。

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

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

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

JSON.stringify 顾名思义,将 JavaScript 对象 转换为字符串表示形式。最有可能交换日期 to/from 的网络服务器。

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

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

JSON.stringify([email,password])

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

另一种方法是将对象字符串化,例如

JSON.stringify({email, password})

在这种情况下,您的变量应像这样被字符串化为 javascript 对象 {"email":"some@emailadress.com", "password":"somestring"}

您也可以像这样构建自己的 JSON 对象

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

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

谢谢。

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

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

所以试试这个:

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