getParameter возвращает ноль с Fetch API - PullRequest
0 голосов
/ 20 мая 2019

Моя проблема в том, что request.getParameter("username") возвращает ноль , если я использую Fetch API.Без Fetch API он работает нормально и возвращает значение.

document.getElementById('login').addEventListener('submit', (e) => {
    e.preventDefault();
    fetch('login', {
        method: 'POST'
    })
    .then((response) => {
        return response.text();
    })
    .then((data) => {
        console.log(data);
    })
    .catch(err => {
        console.error(err);
    })
});

Чего не хватает?

Вот как я пытаюсь поймать значение:

@WebServlet("/login")
public class Login extends HttpServlet {
    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
        System.out.println(req.getParameter("username"));
    }
}

username = <input id="username" name="username" placeholder="Username" type="text">

1 Ответ

2 голосов
/ 20 мая 2019

Как я уже отмечал в комментариях, вы на самом деле не отправляете никаких данных с помощью вашего вызова Ajax - поэтому неудивительно, что сервер не может видеть ни одного свойства username.

Все, что вам нужночтобы сделать эту работу, как предполагалось, нужно заменить это:

fetch('login', {
    method: 'POST'
})

на

fetch('login', {
    method: 'POST',
    body: {username: document.getElementById("username").value}
})

Это предполагает, что имя пользователя, которое вы хотите отправить, является значением, которое пользователь ввел вввод имени пользователя (который я считаю разумным предположением).Любые другие данные, которые вы хотите отправить с запросом, должны быть добавлены как дополнительные пары ключ-значение в параметре body объекта параметров, который вы предоставляете для fetch.

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