POST-запрос на получение данных из API - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь создать систему входа в систему для своего API, но не могу получить ответ в моем Javascript коде. Однако в POSTman я могу:

https://i.stack.imgur.com/WneNm.png

Это мой код javascript:

function loginUser(email, password) {
    let person = {Email: email, Password: password};
    fetch(UrlAuthenticationToken, {
        method: "POST",
        body: JSON.stringify(person),
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        }
    })
        .then((response) =>{
            if (response.status === 200) {
                console.log(`Logged in ${response.status}`);
                return response.json(); // only for generating token
            } else {
                throw new Error(`error with status ${response.status}`);
            }
        })
        .then((response) => {

            let accessPass =
            {
                Token: reponse.Token,
                User:
                {
                    Email: reponse.User.Email,
                    Type: reponse.User.Type
                }
            }

            sessionStorage.setItem(accessPass);

            if(response.User.Type === 'Student'){
                window.href(UrlStudent);
            }
            else if(response.User.Type === 'Lector'){
                window.href(UrlLecturer)
            }
            else if(response.User.Type === 'Business'){
                window.href(UrlCompany)
            }
        })
        .catch((e) => {
            Console.log(e);
        });
};

Дело в том, что я могу отправить свое тело JSON на серверную часть, и серверная часть действительно возвращает ответ, но передняя часть не может похоже, справился с этим ответом. Интересно, что происходит не так? когда я отлаживаю, мой код идет от первого., затем до конца, пропуская все остальное.

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Я вижу, что вы используете клавиши с заглавной буквы, но в вашем почтальоне я вижу, что все клавиши в нижнем регистре. Вы использовали такой ключ, как response.Token с большой буквы. Но ваш ответ от почтальона выглядит как response.token с маленькой t. Помимо этого, в вашем коде также есть ошибка типа. Вы неправильно написали ответ в переменной accessPass.

Ваша функция должна быть такой: -

function loginUser(email, password) {
    let person = {Email: email, Password: password};
    fetch(UrlAuthenticationToken, {
        method: "POST",
        body: JSON.stringify(person),
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        }
    })
        .then((response) =>{
            if (response.status === 200) {
                console.log(`Logged in ${response.status}`);
                return response.json(); // only for generating token
            } else {
                throw new Error(`error with status ${response.status}`);
            }
        })
        .then((response) => {

            let accessPass =
            {
                Token: response.token,
                User:
                {
                    Email: response.user.email,
                    Type: response.user.type
                }
            }

            sessionStorage.setItem(accessPass);

            if(response.user.type === 'Student'){
                window.href(UrlStudent);
            }
            else if(response.user.type === 'Lector'){
                window.href(UrlLecturer)
            }
            else if(response.user.type === 'Business'){
                window.href(UrlCompany)
            }
        })
        .catch((e) => {
            Console.log(e);
        });
};
0 голосов
/ 07 мая 2020

Как это?

$.ajax({
  type : "POST",
  url : "http://localhost/service.asp",
  data: {Email: "asd@asd.asd", Password: "asdasd"},
  //data: '{Email: "asd@asd.asd", Password: "asdasd"}',

  headers : {          
    "Accept" : "application/json; charset=utf-8",         
    "Content-Type": "application/json; charset=utf-8"   
  }        
  success : function(response) {  
    Console.log(response);
  }
});
...