【发布时间】:2011-03-28 04:22:40
【问题描述】:
我对 jQuery 和 AJAX 非常陌生,但是在阅读教程和玩代码 7 小时后,我对它们的工作原理有了很好的理解。这就是我想要完成的......
我有一个允许用户注册网站的网络应用程序。我想让他们输入的用户名(在注册页面中)异步检查数据库中是否存在。看起来很简单,但我一直没有运气。
这是我写的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);}
});
});
});
我现在正在使用静态数据进行调试,因为我在从表单字段中获取值时遇到了另一个问题。我也不太明白成功:函数部分,作为函数参数的“数据”是什么?响应中会出现这种情况吗?
现在我有一个映射到“checkName”的 servlet 并且 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,使用了 .ajax 之类的?有没有更简单的方法或另一种更清洁的方法? 2. 我的 servlet 有问题吗?我觉得响应不正确,或者我的编码不正确。 3. 我应该如何从 userName 元素中获取值?我用过 $("#userName").val() 它总是给出空字符串或 null。
在这一点上的任何指示或提示或任何东西都会非常感激,我有点失去理智了。另外,如果我完全不了解这些,请随时向我指出一个好的教程。
提前致谢。
编辑:所以 userName 元素的 ID 是我的问题。我更改了 ID,现在一切正常。一个后续问题。如果响应返回并说用户名被占用,有没有办法停止表单提交?
【问题讨论】: