Передача нескольких значений в JSON.stringfy в angular6
Я попытался передать несколько значений API, используя JSON.stringfy(). Я не знаю, почему мое второе значение не проходит.
Это код моей попытки:
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 ответа
Метод 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");
}
})
}
Это нормально, это будет работать только с одним значением, фактически теперь вы получаете только "электронную почту".
Правильный синтаксис для двух или более входов
this.http.post(this.api,JSON.stringify([email,password]))
и вы получите [email, пароль]
JSON.stringify как имя предлагает преобразовать объект JavaScript в строковое представление. Скорее всего, обменять дату на / с веб-сервера.
Эта функция ожидает только один обязательный параметр, то есть объект, который вы хотите преобразовать в строку. Причина, по которой вы получили значение электронной почты, но не пароль, заключалась в том, что javscript игнорировал второй параметр.
Сказав это, вы можете передать свои значения в объект массива, в этом формате
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 заключается в том, что на стороне сервера вы можете получать параметры с именами.
Благодарю.