我想从我的index.html上设置的输入表单中获取参数:
GET:<br>
<input type="text" size="20" id="name2" onblur="validate2()"
onFocus = "document.getElementById('msg2').innerHTML = ' '">
<div id = "msg"> </div>
在我的servlet上,我希望通过request.getparameter获取此参数(&#34; name2&#34;)
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Get");
System.out.println(request.getParameter("name2"));
if(!request.getParameter("name2").equals("")) {
numer = request.getParameter("name2");
serviceConnection(request, response);
}
}
但是当我启动我的应用程序时,system.out.println只是打印空变量。
在我的ajaxvalidator javascript文件中,我写了这个:
function validate2() {
var idField = document.getElementById("name2");
var data = "name2=" + encodeURIComponent(idField.value);
if (typeof XMLHttpRequest != "undefined") {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
var url = "Validator"
req.open("GET", url, true);
req.onreadystatechange = inserter2
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(data);
}
function inserter2() {
if (req.readyState == 4) {
if (req.status == 200) {
var msg1 = req.responseText
if (msg1 == "") {
document.getElementById("msg").innerHTML = "<div style=\"color:red\">Wadliwa nazwa</div>";
document.getElementById("org").value = '';
} else {
document.getElementById("org").value = msg1;
}
}
}
如何解决这个问题?
答案 0 :(得分:0)
你的错误在这里:
req.open("GET", url, true);
// ...
req.send(data);
在HTTP GET中,数据需要进入请求URL查询字符串,而不是请求体。在请求正文中发送数据仅适用于POST。请求URL查询字符串是请求URL中?
之后的部分。
所以,这应该做:
req.open("GET", url + "?" + data, true);
// ...
req.send();
请注意,您可以删除请求正文内容类型标题。