Java Servlet request.getParameter为null

时间:2016-06-30 05:18:08

标签: javascript java json ajax servlets

我想使用request.getparameter来确定我的页面的事件的操作。示例添加或删除按钮。

但是当我按下onsubmit =" post();返回false;"用于ajax返回内容类型application / json的Javascript,request.get参数始终为null。

当我删除onsubmit方法时,我会得到请求参数等于"添加"。

在这种情况下,我应该如何确定操作,以便在页面上显示不同的按钮。

JavaScript
function post() {
    var xhttp;
    if (window.XMLHttpRequest) {
        // code for modern browsers
        xhttp = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xhttp.onreadystatechange = function () {
        if (xhttp.readyState == 4 && xhttp.status == 200) {
            document.getElementById("postView").innerHTML = xhttp.responseText;
        }
    };
            //Do someting
    xhttp.open("POST", "myServlet", true);
    xhttp.setRequestHeader("Content-Type", "application/json");
    xhttp.send(jsonObj);
}

HTML Form
<form name="myForm" action="myServlet" method="post" onsubmit="post();return false;">
Name: <input type="text" id="fnText">
<input type="submit" name="add" value="Add" />
</form>


Java Servlet
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("Method "+request.getMethod());           
String add = request.getParameter("add");
System.out.println("getParameter is " + add);
}

2 个答案:

答案 0 :(得分:0)

你没有设置jsonObj的值,你需要传递它,否则你将不会收到任何值。

以下是您应该发送的内容的示例:

xmlhttp.open("POST", "/myServlet");
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlhttp.send(JSON.stringify({"add":"add"}));

答案 1 :(得分:0)

当您通过ajax调用发送请求时(即使用post()函数),您没有传递表单的值。

当您删除onsubmit方法时,您正在使用表单的操作,表单将被编码并在http请求中发送。

注意:您应该考虑使用jQuery,然后您的javascript代码会大大简化。

请参阅此帖子:Pass entire form as data in jQuery Ajax function