Javascript Servlet可以';t读取XMLHttpRequest参数

Javascript Servlet可以';t读取XMLHttpRequest参数,javascript,java,servlets,xmlhttprequest,Javascript,Java,Servlets,Xmlhttprequest,我正在从JavaScript创建HTTP POST请求,如下所示: <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> </head> <body> <input id="num" type="text" /> <input type="b

我正在从JavaScript创建HTTP POST请求,如下所示:

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <input id="num" type="text" />
    <input type="button" id="btn" value="submit" onclick="func()"/>
    <script>
    function func() {
        var num = document.getElementById("num").value;
        var request = new XMLHttpRequest();
        request.open("POST", "/Servlet/MyServlet", true);
        request.onreadystatechange = function() {
            if(request.readyState == 4 && request.status == 200) {
                 ...        }
        };
        request.setRequestHeader("Content-Type", "application/www-x-form-urlencoded");
        request.send("num=" + num);
    }
    </script>
</body>
</html>

已调用servlet,但参数为
null
您的代码似乎正常,请尝试打印通过
request.getParameterMap()获得的所有参数

在num变量中作为参数传递的是什么?我假设它是一个数字,但如果它是一个字符串,您需要确保它也是URL编码的

找到了问题:它是
setRequestHeader
行。您的是
application/www-x-form-urlencoded
,应该是
application/x-www-form-urlencoded
。尝试将下面的行替换到代码中。否则,您的代码工作起来很有魅力(我已经尝试过了)

protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
              ...
            int num = Integer.parseInt(request.getParameter("num"));            
    }
 request.setRequestHeader("Content-type","application/x-www-form-urlencoded");