javascript ajax servlet表单参数名称错误

javascript ajax servlet表单参数名称错误,javascript,ajax,servlets,Javascript,Ajax,Servlets,我正在使用javascrpt动态创建一个html表单,并使用ajax提交它。当我从servlet检查参数名时,它没有正确显示参数名。下面显示了javascript/ajax和servlet代码以及tomcat日志文件(catalina.out)的诊断输出 Javascript: var gulticsForm = document.createElement("form"); gulticsForm.action="/gultics/Utils"; var element1=document.c

我正在使用javascrpt动态创建一个html表单,并使用ajax提交它。当我从servlet检查参数名时,它没有正确显示参数名。下面显示了javascript/ajax和servlet代码以及tomcat日志文件(catalina.out)的诊断输出

Javascript:

var gulticsForm = document.createElement("form");
gulticsForm.action="/gultics/Utils";
var element1=document.createElement("input");
element1.setAttribute("name", "sqlText");
element1.setAttribute("value", "This is the value of the element");
gulticsForm.appendChild(element1);
document.body.appendChild(gulticsForm);
var fm = new FormData(gulticsForm);
xhttp.open("POST", "/gultics/Utils", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
xhttp.send(fm);
public void doPost(HttpServletRequest request, HttpServletResponse response) { callServer(request, response); }
public void doGet(HttpServletRequest request, HttpServletResponse response) { callServer(request, response); }
private void callServer(HttpServletRequest request, HttpServletResponse response) {
    try {
        request.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        Enumeration<String> parameterNames = request.getParameterNames();
        int parameterNo = 0;
        while (parameterNames.hasMoreElements()) {
            System.out.println("Name of Parameter " + parameterNo++ + " is " + parameterNames.nextElement());
        }
        String sqlText = request.getParameter("sqlText");
        System.out.println("SQL Text: " + sqlText);
Servlet:

var gulticsForm = document.createElement("form");
gulticsForm.action="/gultics/Utils";
var element1=document.createElement("input");
element1.setAttribute("name", "sqlText");
element1.setAttribute("value", "This is the value of the element");
gulticsForm.appendChild(element1);
document.body.appendChild(gulticsForm);
var fm = new FormData(gulticsForm);
xhttp.open("POST", "/gultics/Utils", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
xhttp.send(fm);
public void doPost(HttpServletRequest request, HttpServletResponse response) { callServer(request, response); }
public void doGet(HttpServletRequest request, HttpServletResponse response) { callServer(request, response); }
private void callServer(HttpServletRequest request, HttpServletResponse response) {
    try {
        request.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        Enumeration<String> parameterNames = request.getParameterNames();
        int parameterNo = 0;
        while (parameterNames.hasMoreElements()) {
            System.out.println("Name of Parameter " + parameterNo++ + " is " + parameterNames.nextElement());
        }
        String sqlText = request.getParameter("sqlText");
        System.out.println("SQL Text: " + sqlText);
public void doPost(HttpServletRequest请求,HttpServletResponse响应){callServer(请求,响应);}
public void doGet(HttpServletRequest,HttpServletResponse){callServer(request,response);}
私有void调用服务器(HttpServletRequest请求、HttpServletResponse响应){
试一试{
setCharacterEncoding(“UTF-8”);
PrintWriter out=response.getWriter();
枚举parameterNames=request.getParameterNames();
int参数no=0;
while(parameterNames.hasMoreElements()){
System.out.println(“参数名称”+parameterNo++“是”+parameterNames.nextElement());
}
字符串sqlText=request.getParameter(“sqlText”);
System.out.println(“SQL文本:+sqlText”);
来自catalina.out的输出

参数0的名称为-------------------22958312529757

内容处置:表单数据;名称

SQL文本:空


你能帮忙吗?如果我能提供更多信息,请告诉我。

你必须阅读请求的正文,看看这个答案


你好,Lorenzo,谢谢你的帮助。你认为我必须解析消息正文并重新实现getParameterNames、getParameter等方法吗?我可以不按原样使用这些方法吗?有两点1)表单在结构方面是否使用JavaScript正确呈现2)尝试调试parameterNames以获取接收到的值弄清楚问题是在表单端还是servlet端Hi Shivam,非常感谢您的帮助。Shivam,表单是通过ajax从零开始动态创建的,目的是使用ajax创建和提交表单,然后销毁/删除javascript函数本身中临时创建的表单对象。它不在倾向于呈现表单。此外,catalina.out的输出显示了参数名称,这是上面显示的两行元数据,“-------------------------------2295831219757内容处置:表单数据;名称”你能试着为在SameJ中收到的值调试参数名称吗?好奇的是,实际的商业案例在寻找什么?我们可以使用ajax直接将值发送给servlet/controller,而不是表单谢谢你的建议Shivam。我将尝试直接通过ajax发送内容,而不使用表单并更新ou我在这里。