在我的JSP页面中,我试图通过AJAX调用将表单数据字符串化后,将其发送到servlet,以进行进一步处理。
function validateLoginForm() {
var url = "<%=(request.getContextPath())%>/Login.do";
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var params = { "username":username,
"password":password
};
var http = new XMLHttpRequest();
http.open("POST", url, false);
http.setRequestHeader("X-Requested-With","XMLHttpRequest");
http.setRequestHeader("Content-type", "application/json");
http.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
$("html").html(this.responseText);
}
};
http.send(JSON.stringify(params));
return true;
}
<form name="loginForm" method="POST" autocomplete="off" onsubmit="return validateLoginForm()">
....
....
....
<tr id="userNameRow">
<th id="usernameLabel">Username</th>
<td align="left"><input name="username" id="username" autocomplete="off" type="text" aria-describedby="loginError"></td>
</tr>
<tr id="userPwdRow">
<th id="passwordLabel">Password</th>
<td align="left"><input name="password" id="password" autocomplete="off" type="password"></td>
</tr>
现在一切正常,但是如果我看到“网络”标签请求表单数据,则它只是纯ampersand separated
。
我在做什么错了?
更新
即使在我的浏览器的缓存,内存转储中,我也可以看到密码和用户名只是用&分隔,没有字符串化。
但是在我的servlet中,我必须解析并从JSON对象本身读取参数,
JSONObject jsonObj = new JSONObject(requestBody);
String username = (String) jsonObj.get("username");
String password = (String) jsonObj.get("password");