Ajax XMLHttpRequest请求/Servlet响应为null
servlet有一个问题。我通过XMLHttpRequest将表单数据发送到服务器,但servlet错误地处理请求对象,并在响应对象中发送“null.null”。我尝试了以下方法,但没有任何帮助:Ajax XMLHttpRequest请求/Servlet响应为null,ajax,servlets,Ajax,Servlets,servlet有一个问题。我通过XMLHttpRequest将表单数据发送到服务器,但servlet错误地处理请求对象,并在响应对象中发送“null.null”。我尝试了以下方法,但没有任何帮助: 按encodeURIComponent编码“document.getElementsByName('contractor').value” 将FormData的对象作为参数传递给.send() 将表单中的enctype属性更改为“multipart/formdata” 使用get方法 请看一看。如
- 按encodeURIComponent编码“document.getElementsByName('contractor').value”李>
- 将FormData的对象作为参数传递给.send()李>
- 将表单中的enctype属性更改为“multipart/formdata”李>
- 使用get方法
<div id="request-form">
<form enctype="application/x-www-form-urlencoded" method="post">
Contractor<input type="text" name="contractor"><br>
Contract No<input type="text" name="contract-no">
<input type="button" onclick=clickOnButton() value="Submit"><br>
</form>
</div>
var httpRequest;
function clickOnButton() {
if (window.XMLHttpRequest) {
httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
var dataForRequest = 'contract=' + document.getElementsByName('contractor').value + '&contract-no=' + document.getElementsByName('contract-no').value;
httpRequest.onreadystatechange = responseHandler;
httpRequest.open('POST', "/AjaxServ", true);
httpRequest.send(dataForRequest);
}
function responseHandler() {
if (httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
var line = httpRequest.responseText;
alert(line);
}
}
}
public class ServletClass extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String contractor = req.getParameter("contractor");
String contractNo = req.getParameter("contract-no");
resp.setContentType("text/plain");
PrintWriter out = resp.getWriter();
out.write(contractor + "." + contractNo);
}
}
Java:
<div id="request-form">
<form enctype="application/x-www-form-urlencoded" method="post">
Contractor<input type="text" name="contractor"><br>
Contract No<input type="text" name="contract-no">
<input type="button" onclick=clickOnButton() value="Submit"><br>
</form>
</div>
var httpRequest;
function clickOnButton() {
if (window.XMLHttpRequest) {
httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
var dataForRequest = 'contract=' + document.getElementsByName('contractor').value + '&contract-no=' + document.getElementsByName('contract-no').value;
httpRequest.onreadystatechange = responseHandler;
httpRequest.open('POST', "/AjaxServ", true);
httpRequest.send(dataForRequest);
}
function responseHandler() {
if (httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
var line = httpRequest.responseText;
alert(line);
}
}
}
public class ServletClass extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String contractor = req.getParameter("contractor");
String contractNo = req.getParameter("contract-no");
resp.setContentType("text/plain");
PrintWriter out = resp.getWriter();
out.write(contractor + "." + contractNo);
}
}
它不应该是
'contractor='+document.getElementsByName('contractor')。value
而不是
'contract='+document.getElementsByName('contractor').value
?httpRequest.open('POST',“/AjaxServ”,true)代码>将不包括上下文路径。我的意思是,如果您在http://localhost/project/testpage
如果您的帖子在/AjaxServ
上,它将在http://localhost/AjaxServ
因此,如果出现404错误,您可以使用Firebug(网络)或任何工具来查看HTTP请求