2

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

3 回答 3

1

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

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

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

你会收到[电子邮件,密码]

于 2018-12-28T15:58:23.667 回答
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");
        }
    })
}
于 2018-12-29T07:13:16.533 回答
1

顾名思义, JSON.stringifyJavaScript 对象转换为字符串表示形式。最有可能与 Web 服务器交换日期。

此函数只需要一个必需参数,即您要字符串化的对象。您获得电子邮件值而不是密码的原因是 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 对象的好处是在服务器端可以接收带有名称的参数。

谢谢。

于 2018-12-28T17:50:37.790 回答