Передача нескольких значений в JSON.stringfy в angular6 - PullRequest
0 голосов
/ 28 декабря 2018

Я попытался передать несколько значений 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 ]

0 голосов
/ 28 декабря 2018

JSON.stringify , как следует из названия, для преобразования объекта JavaScript в строковое представление.Скорее всего, обменять дату на / с веб-сервера.

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

Спасибо.

0 голосов
/ 29 декабря 2018

Метод 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");
        }
    })
}
0 голосов
/ 28 декабря 2018

Это нормально, это будет работать только с одним значением, фактически теперь вы получаете только «электронную почту».

Правильный синтаксис для двух или более входов -

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

и вы получите [email, пароль]

...