Fetch API的getParameter返回null

时间:2019-05-19 21:17:41

标签: javascript java fetch

我的问题是,如果我使用Fetch API,则request.getParameter("username")返回 null 。没有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 个答案:

答案 0 :(得分:2)

正如我在评论中已经指出的那样,您实际上并没有通过Ajax调用发送任何数据-因此,也难怪服务器看不到任何username属性。

要按预期进行这项工作,您需要做的就是替换它:

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

使用

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

这是假设您要发送的用户名是用户在“用户名”输入中输入的值(我认为这是一个合理的假设)。您希望与请求一起发送的任何其他数据都应作为其他键值对添加到您提供给body的选项对象的fetch参数中。