XHR не отправляет объект json - PullRequest
0 голосов
/ 18 октября 2019

У меня есть клиент-сервер экспресс-приложение. Я пытаюсь отправить XHR-запрос от внешнего интерфейса на мой контроллер при передаче данных JSON. Мой код внешнего интерфейса выглядит следующим образом:

function handle_login(){
    var username_field = document.getElementById('input_username');
    var pass = document.getElementById('input_password');
    if(username_field.value!=null)console.log(username_field.value);
    console.log(pass.value);


    //window.location.href = "/loginAttempt/"+username.value+"-"+pass.value;
    var xhr = new XMLHttpRequest();
    var url = "/home_pogled"; 
     xhr.open("GET", url, true);
     xhr.setRequestHeader("Content-type", "application/json");
             var data = {
            username : username_field.value,
            password : pass.value
        }
        var json = JSON.stringify(data);
        xhr.send(json);

        xhr.onload = function() {//ob uspesnem odgovoru
            var responseText = xhr.responseText;
            //console.log("Backend server response -" +responseText);
            // uporabi odgovor
        };
        xhr.onerror = function() {
          console.log('There was an error!');
        };


}

Я могу отправить запрос, и я уверен, что данные записываются в объект json до его отправки, но когда я делаю consonle.log (req.body)) в моем контроллере upor, получающем запрос, тело пустое "{}", где должно быть получено значение имени пользователя и пароля в объекте json. Чего мне не хватает?

1 Ответ

0 голосов
/ 18 октября 2019

Сторона клиента:

Мы не можем отправить объект в методе GET, это должны быть параметры запроса, как показано ниже:

let url = `/home_pogled?username=${username_field.value}&password=${pass.value}`; 

xhr.open('GET', url);

Сторона сервера(экспресс-приложение):

В экспресс-js мы можем получить параметры запроса в req.query

let username = req.query.username; let password = req.query.password

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...