Ajax ,怎么在此基础之上判断,输入不能为空?

后台JAVA protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/xml;charset=UTF-8");
PrintWriter out =resp.getWriter();
String name = req.getParameter("id");
System.out.println("aaaaa");
System.out.println(name);
if(name.equals("admin")){
out.write("invalid");
}
else {
out.write("null");
}
}

var req; function validate(){ var idField = document.getElementById("userid"); var url = "validate.do?id="+escape(idField.value); if(window.XMLHttpRequest){ req = new XMLHttpRequest(); } else if (window.ActiveXObject){ req = new ActiveXObject("Microsoft.XMLHTTP"); } req.open("GET",url,true); req.onreadystatechange = callback; req.send(null); } function callback(){ if(req.readyState == 4){ if(req.status == 200){ // alert(req.responseText); var msg = req.responseXML.getElementsByTagName("msg")[0].firstChild.data; // alert(msg); setMsg(msg); } } } function setMsg(msg){ //alert(msg); mdiv = document.getElementById("usermsg"); if( msg == "invalid") { mdiv.innerHTML ="<font color='red'>用户名已经存在</font>"; } else if (msg == "null") { mdiv.innerHTML ="<font color='green'>不为空 </font>"; } }
SERVID :
    IP :

这样只是提示,提交的话还是会放到数据库里,请问错误的话如何让他不提交,谢谢了。初学

[code="javascript"]
function validate(){
var idField = document.getElementById("userid");
//增加客户端验证
if(!idField.value){
alert("请输入ID");
return;
}
var url = "validate.do?id="+escape(idField.value);
if(window.XMLHttpRequest){
req = new XMLHttpRequest();
} else if (window.ActiveXObject){
req = new ActiveXObject("Microsoft.XMLHTTP");
}
req.open("GET",url,true);
req.onreadystatechange = callback;
req.send(null);
}
[/code]
其他可以保持不变,服务器端最好也进行传入参数ID的为空判断,非空或符合业务逻辑时才进行数据库保存。

你上面的写法是把验证放在AJAX回调方法里面,那自然是空数据也提交到服务器了。你应该做AJAX发起请求前做一次客户端验证,然后再服务器端再做服务器端验证并返回给AJAX请求。

[quote]
我不想alert("请输入ID"); 显示
我想用 加到后面
[/quote]
那也可以,把alert这句改成显示相应效果代码就可以了,关键在于后面的“return”,这样后面的代码就不会执行了。

请直接jquery,原生的js写起来太费劲