我在 html 页面中有以下 JavaScript 函数,该函数将两个参数发送到 JSP 页面。我尝试通过发出 GET 请求来发送参数,并且能够在 JSP 中接收它们。但是当我将 javascript 函数更改为使用 POST 时,JSP 不会收到任何参数。我知道这一点是因为我将所有参数转储到 JSP 中。
这个发送 GET 请求的函数是有效的。它会提醒所有参数:
function testURL1(){
let url = 'test.jsp?oid=123&pid=5555';
var xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET', url, true);
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
{
alert(xmlHttp.responseText);
}
}
xmlHttp.send();
}
以下功能无法使用。它没有警告任何参数:
function testURL2(){
let url = 'test.jsp';
var xmlHttp = new XMLHttpRequest();
var formData = new FormData();
formData.append('oid', '1234');
formData.append('pid', '555');
xmlHttp.open('POST', url, true);
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
{
alert(xmlHttp.responseText);
}
}
xmlHttp.send(formData);
}
这是JSP代码:
<%@ page import="java.util.*" %>
<%
Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements()) {
String paramName = (String)paramNames.nextElement();
out.print(paramName + " ");
String paramValue = request.getParameter(paramName);
out.println(" " + paramValue + "");
}
%>
知道我做错了什么吗?
当您执行 POST 请求时,参数会在请求正文中发送。它们被编码为
x_www_form_urlencoded
格式。 HttpServletRequest::getParameterNames()
不解析请求以检索发送的参数。您应该使用 request.getParameterMap();
来获取请求参数。