我想使用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);
}
答案 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代码会大大简化。