Java 使用Ajax从Servlet中的doGet获取参数

Java 使用Ajax从Servlet中的doGet获取参数,java,javascript,ajax,servlets,Java,Javascript,Ajax,Servlets,我想从在my index.html上设置的输入表单中获取参数: GET:<br> <input type="text" size="20" id="name2" onblur="validate2()" onFocus = "document.getElementById('msg2').innerHTML = ' '"> <div id = "msg">&nbsp</div> 但是当我启动应用程序时,system.out

我想从在my index.html上设置的输入表单中获取参数:

GET:<br> 
<input type="text" size="20" id="name2" onblur="validate2()"  
     onFocus = "document.getElementById('msg2').innerHTML = ' '">
<div id = "msg">&nbsp</div>
但是当我启动应用程序时,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;
            }
        }
    }
函数validate2(){
var idField=document.getElementById(“name2”);
var data=“name2=”+encodeURIComponent(idField.value);
if(XMLHttpRequest的类型!=“未定义”){
req=新的XMLHttpRequest();
}else if(window.ActiveXObject){
req=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
var url=“验证器”
请求打开(“获取”,url,true);
req.onreadystatechange=插入器2
请求setRequestHeader(“内容类型”、“应用程序/x-www-form-urlencoded”);
请求发送(数据);
}
函数插入器2(){
如果(req.readyState==4){
如果(请求状态==200){
var msg1=req.responseText
如果(msg1==“”){
document.getElementById(“msg”).innerHTML=“Wadliwa-nazwa”;
document.getElementById(“org”).value='';
}否则{
document.getElementById(“组织”).value=msg1;
}
}
}
如何解决这个问题?

您的错误是:

req.open("GET", url, true);
// ...
req.send(data);
在HTTP GET中,数据需要进入请求URL查询字符串,而不是请求正文。在请求正文中发送数据仅适用于POST。请求URL查询字符串是请求URL中
之后的部分

因此,这应该做到:

req.open("GET", url + "?" + data, true);
// ...
req.send();
请注意,您可以删除请求正文内容类型标头

另见:

检查浏览器控制台是否有任何错误。同时检查发送到浏览器中servlet的表单数据,检查是否从那里发送值。@underdog,我编辑了我的问题,并从javascript文件中添加了代码。代码是您的servlet代码;我在任何地方都看不到ajaxcode@underdog好的,对不起-我的错:)你在b登记了吗如果值正在发送到服务器,则为rowser
req.open("GET", url + "?" + data, true);
// ...
req.send();