Java Servlets-Ajax重定向到主页
我有一个控制器servlet、一个jsp和一些javascript/jquery代码。当用户单击“删除”按钮时,ajax向servlet发送请求,调用servlet的deleteProject()方法,该方法基本上从数据库和项目jsp页面中删除用户的项目。到目前为止,一切顺利。问题是一旦删除操作完成,servlet就会将我重定向到主页/登录页面,而不是停留在项目页面上。我不知道为什么会发生这种情况,也不知道如何解决。以下是servlet的doPost()方法: 这是jQuery代码(它显示一个模式,如果用户确认删除,它将从数据库中删除项目) 我的猜测是,在ajax删除操作成功完成后,“action”参数为null,但我不确定如何修复它。我只想让用户从数据库中删除项目,并在他的项目页面上保留更新的项目列表 有什么想法吗?非常感谢。 A 编辑: 这是我在Firefox控制台上收到的错误消息。显然,ajax函数从未完成:Java Servlets-Ajax重定向到主页,java,jquery,ajax,servlets,Java,Jquery,Ajax,Servlets,我有一个控制器servlet、一个jsp和一些javascript/jquery代码。当用户单击“删除”按钮时,ajax向servlet发送请求,调用servlet的deleteProject()方法,该方法基本上从数据库和项目jsp页面中删除用户的项目。到目前为止,一切顺利。问题是一旦删除操作完成,servlet就会将我重定向到主页/登录页面,而不是停留在项目页面上。我不知道为什么会发生这种情况,也不知道如何解决。以下是servlet的doPost()方法: 这是jQuery代码(它显示一个模
对象{readyState:0,getResponseHeader:getResponseHeader(),getAllResponseHeaders:getAllResponseHeaders(),setRequestHeader:setRequestHeader(),OverrideMetype:OverrideMetype(),statusCode:statusCode(),abort:abort(),state:state(),always:always(),catch:catch(),…}如果servlet打算用作ajax资源,它应该执行任何重定向/转发操作,但您的servlet执行
dispatcher.forward(请求、响应)代码>。这是使你的应用程序“重定向”的代码。您可以将某种类型的完成代码写入响应流,如response.getWriter().write(“ok”)代码>谢谢你的帮助。经过数小时的搜索,我发现问题是由提交按钮引起的。一旦我将其更改为input type=“button”,请求就完成了。我知道这听起来很可笑。
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher dispatcher = null;
HttpSession session = request.getSession(true);
String base = "/jsp/";
String url = base + "/home.jsp";
String action = request.getParameter("action");
if (action != null) {
switch (action) {
case "Delete":
url = base + "projects.jsp";
String pid = request.getParameter("parameter_pid");
int project_id = Integer.parseInt(pid);
User user = (User) session.getAttribute("currentSessionUser");
deleteProject(user, project_id);
break;
}
dispatcher = getServletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);
return;
}
$('#deleteprojectmodal').on('show.bs.modal', function (e) {
var project_id = e.relatedTarget.id;
var project_name = e.relatedTarget.name;
$(this).find('.modal-body').html('Delete project: ' + project_name +"?" );
$('#parameter_pid').val(project_id);
$('#Delete').click (function ()
{
$.ajax({
url: '/Testing',
data: {
action: "Delete",
parameter_pid : project_id
},
type: 'post',
});
});
});