JSP中无法从ajax请求获取表单参数

问题描述 投票:0回答:1

我在 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 + "");
    }
 %>

知道我做错了什么吗?

javascript ajax forms jsp xmlhttprequest
1个回答
0
投票

当您执行 POST 请求时,参数会在请求正文中发送。它们被编码为

x_www_form_urlencoded
格式。
HttpServletRequest::getParameterNames()
不解析请求以检索发送的参数。您应该使用
request.getParameterMap();
来获取请求参数。

© www.soinside.com 2019 - 2024. All rights reserved.