Передача нескольких значений в 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 заключается в том, что на стороне сервера вы можете получать параметры с именами.

Благодарю.

Другие вопросы по тегам