AJAX请求servlet验证代码是不是重复时总是返回值为undefined

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AJAX请求servlet验证代码是不是重复时总是返回值为undefined相关的知识,希望对你有一定的参考价值。

请求servlet内容
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException

response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String clientId = request.getParameter("client_id");
boolean bl = ClientManager.getClientManager().clientIdCl(clientId);
if(bl)
out.print("你输入的分销商代码已存在,请重新输入!");




JAJX函数

function clientIdCl()
var clientid = document.forms[0].clientId.value;
var XHttp = null;
if(trim(clientid) != "")
if(window.XMLHttpRequest)
XHttp = new XMLHttpRequest();
else if(window.ActiveXObject)
XHttp = new ActiveXObject("Microsoft.XMLHTTP");

var url="../ClientIdServlet?client_id=" + trim(clientid) + "&time="+new Date().getTime();
XHttp.open("GET",url,true);
XHttp.onreadystatechange=function()
if(XHttp.readyState==4)
if(XHttp.status==200)
alert(XHttp.responstText);
document.getElementById("clientIds").innerHTML="<font color='red'>"+ XHttp.responstText +"</font>"
else
alert("请求失败,你的错误代码是:"+XHttp.status);


;
XHttp.send(null);



验证方法
/**
* 判断client_id 数据是否存在于数据库
* @param client_id
* @return
*/
public boolean clientIdCl(String client_id)
boolean bl = false;
String sql="select count(*) from t_client where client_id =?";
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
try
conn = DButil.getConnection();
pst = conn.prepareStatement(sql);
pst.setString(1, client_id);
rs = pst.executeQuery();
rs.next();
int count = rs.getInt(1);
if(count>0)
bl = true;

catch(SQLException e)
e.printStackTrace();
finally
DButil.close(rs);
DButil.close(pst);
DButil.close(conn);

return bl;

参考技术A 在 servlet里打印一个字符出来,试试有没有到servlet里来,再一个是你的servlet里写out.print("你输入的分销商代码已存在,请重新输入!"); 这个是没用的,因为你是AJAX调用,不是form提交。所以我想不是提交url有问题,就是你没有信息返回给页面的原因,out.print("你输入的分销商代码已存在,请重新输入!"); 这句好像不是不能把信息传到前台页面的。 参考技术B 你的 servlet 和ajax 请求都没有错,出现undefined 应该是你的js脚本错误,获取到没有定义的对象,认真检查排除一下js代码可以了追问

我的js文件里面就是一个去空格的函数
我在servlet中加啦调试的打印语句。。能打印出来。说明函数调用啦servlet可就是得到的值为
undefined,还有一点。。我测试得知,他不管数据里有没有,都会得到undefined,也就是如果数据里面有,if(bl)
out.print("你输入的分销商代码已存在,请重新输入!");

他进去啦。。没有就没进去。。可是前台一样得到undefined

以上是关于AJAX请求servlet验证代码是不是重复时总是返回值为undefined的主要内容,如果未能解决你的问题,请参考以下文章

关于在页面得到的servlet验证码总是上一次保存在session中的

我无法捕获通过 ajax 请求发送到 servlet 的数据 [重复]

asp注册验证用户名是不是重复的Ajax实例

IT兄弟连 JavaWeb教程 jQuery对AJAX的支持经典案例

ajax jQuery+servlet

Servlet处理原生Ajax请求