您好,我在eclipse上的Web应用程序上有一个简单的注册表单。 我制作这个小脚本来控制重复的用户名。
<script type="text/javascript">
$(document).ready(function() {
$('#idBtnRegister').click(function(){
username = $('#idUsername').val();
CCService.findUsername(username,{
callback: function(find) {
if(find == true) {
$('#idUsername').popover({ html: true, content: 'username already exist', placement: 'right' });
$('#idUsername').popover('show');
}
else {
url = '<%= CCGestioneConstants.CONTEXT_PATH %>' + '/registered';
var params = {};
params["username"] = $('#idUsername').val();
params["name"] = $('#idName').val();
params["surname"] = $('#idSurname').val();
params["password"] = $('#idPassword').val();
params["email"] = $('#idEmail').val();
$.ajax({
type: 'POST',
data: params,
url: url,
async: false,
cache: false,
});
}
},
async: false
});
});
});
</script>
CCService.findUsername这是一个DWR调用:
public boolean findUsername(String username) throws SQLException, ClassNotFoundException {
UserDao userDao = new UserDao();
boolean find = userDao.findUserByUsername(username);
return find;
}
url应该调用映射在/ registerd上的servlet
url = '<%= CCGestioneConstants.CONTEXT_PATH %>' + '/registered';
实际上一切正常,如果用户名不存在,用户将被添加到数据库中,但是在servlet中,命令:
request.getRequestDispatcher("html/pages/registered.jsp").forward(request, response);
不要重定向jsp,但我仍然在注册页面上。
为什么?
答案 0 :(得分:0)
您的电话是在Ajax中。您需要在Ajax响应上添加处理程序,并使用window.location = url将浏览器重定向到您的页面(registered.jps)。
servlet中的转发可能有效,但是当您在Ajax中调用servlet时,它不会对您的网页内容产生任何影响。