我对jQuery和AJAX非常陌生,但是在阅读教程和玩代码7个小时后,我对它们的工作原理有了一个很好的理解。这是我正在努力完成......如何让jQuery,AJAX和一个servlet一起工作?
我有一个Web应用程序,允许用户注册该网站。我想让他们输入的用户名(在注册页面中)异步检查数据库中是否存在。看起来很简单,但我一直没有运气。
这是jQuery的,我已经写了....
$(document).ready(function() {
$("a").click(function(){
alert("Should be going to servlet now");
$.ajax({
type: 'GET',
url: "checkName",
data: {userName: "Hexose"},
success: function(data){ alert(data);}
});
});
});
我使用的静态数据,现在的,因为我有另一个问题正从表单字段中的值进行调试。我也不太了解成功:函数部分,什么是“数据”作为函数的参数?这是否有回应?
现在我有一个servlet映射到“checkName”,并且该servlet工作(我调试并通过URL传递参数)。下面是servlet代码...
public class CheckUserNameServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String targetUN = request.getParameter("userName");
if (data.UserDB.userNameExists(targetUN)) {
String exists = "Username already taken...";
response.setContentType("text");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().write(exists);
response.setStatus(200);
} else {
response.getWriter().write("Username is available...");
}
}
}
我知道,我的数据库调用返回我需要什么,但我怀疑的东西在这个servlet是错误的。而良好的措施,这里就是数据应该从
<tr>
<td align="right">Username:</td>
<td><input type="text" name="userName" id="userName" value="${user.userName}" /</td>
<td><span id="exist"> <a href="">Check Availability</a></span></td>
</tr>
到来所以基本上我的问题是这个.... 1.我正确使用jQuery,使用阿贾克斯和诸如此类的元素?有没有更简单的方法来做到这一点或另一种更清洁的方法? 2.我的servlet有问题吗?我觉得我的回复不正确,或者我的编码不正确。 3.我该如何去获取userName元素的值?我已经使用$(“#userName”).val(),它总是给和空字符串或null。
任何指针或提示或任何在这一点上会是大大赞赏,我有点失去了我的想法在这一个。此外,如果我完全没有任何这种感觉,只是指向一个很好的教程。
在此先感谢。
编辑:所以userName元素的ID是我的问题。我改变了ID,现在整个事情都起作用了。一个跟进问题,但。有没有办法停止表单提交如果响应回来,并说用户名被采取?虽然你可能没有要附加相同的点击处理程序所有锚页面上
感谢所有谁回答,你真是帮了我想解决这个问题。最终成为问题的是在整个时间里面对着我。我无法从$(“#userName”).val()中获取任何值,因此在绝望的最终行为中,我相应地更改了userName表单元素的ID和脚本,并猜测是什么?整件事情奏效。 – mfunaro 2011-03-27 20:17:24