Java 使用Ajax从Servlet中的doGet获取参数
我想从在my index.html上设置的输入表单中获取参数: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"> </div> 但是当我启动应用程序时,system.out
GET:<br>
<input type="text" size="20" id="name2" onblur="validate2()"
onFocus = "document.getElementById('msg2').innerHTML = ' '">
<div id = "msg"> </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();
请注意,您可以删除请求正文内容类型标头
另见:
req.open("GET", url + "?" + data, true);
// ...
req.send();