我尝试使用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");
}
})
}
答案 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对象的好处是,在服务器端可以接收带有名称的参数。
谢谢。