jQuery+Spring 从数据库中删除
jQuery+Spring 从数据库中删除
我有一个使用Spring的项目,我需要使用jQuery创建一个管理员页面。我有一个包含所有用户的表格,还有一个\"删除\"按钮。当我点击该按钮时,用户应该从数据库中删除。没有脚本时一切正常,但是使用脚本时,我无法弄清楚如何将用户从数据库中删除以及如何将用户登录名发送到控制器。我只能删除表格中的行,但是当我刷新页面时,用户仍然存在。\n请问有人可以帮我解决如何在脚本中删除数据库中的用户吗?\n表格\n
登录名 | 名字 | 姓氏 | 生日 | 角色 | 操作 |
---|---|---|---|---|---|
${user.login} | ${user.firstname} | ${user.lastname} | ${user.birthday} | 编辑 删除 |
\n没有脚本的控制器(现在已注释掉,但是它可以正常工作)\n
@RequestMapping("/delete/{userLogin}") public String deleteUser(@PathVariable("userLogin") String userLogin) { userService.remove(userService.findByLogin(userLogin)); return "redirect:/welcome"; }
\n用于脚本的控制器\n
@Controller public class SpringController { @Autowired private UserService userService; @RequestMapping(value = "/delete/{userLogin}", method = RequestMethod.POST) @ResponseBody public boolean updateUser(@RequestParam("userLogin") String userLogin) { userService.remove(userService.findByLogin(userLogin)); return true; } }
\n脚本\n
问题出现的原因:想要使用jQuery发送数据,建议使用带有REST的AJAX。上述代码中的控制器处理了JSON请求,具体来说是一个logins数组。然后,只需要像下面的JavaScript代码一样调用它即可。
解决方法:需要为此设置Jackson。有关更多信息,请参见此和此链接。
文章整理如下:
如果要使用jQuery发送数据,建议使用带有REST的AJAX。下面是我会这样做的方式:
(value="delete.json", method=RequestMethod.DELETE, produces="application/json") public Boolean deleteAjaxMultiple( String[] gotten) { for (String login : gotten) userService.remove(userService.findByLogin(login)); return true; }
这个控制器处理了JSON请求,具体来说是一个logins数组。然后,你只需要像下面的JavaScript代码一样调用它即可:
$.ajax({ headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, url: '/delete.json', //或者根据你的需求设置url type: 'DELETE', data: JSON.stringify(arr), //arr是你想要删除的logins数组 success: function(data) { location.reload(true); //或者在成功后执行你想要的操作 } });
你需要为此设置Jackson。有关更多信息,请参见[此链接](https://stackoverflow.com/questions/16335591)和[此链接](https://stackoverflow.com/questions/5908466/5908632#5908632)。
在你的代码中,你没有调用需要调用处理程序方法来删除用户的URL。我假设你想使用ajax来做这个?如果你能添加你的标记,这也会有所帮助。
你可以做的是(暂时,因为你的问题和代码似乎相当模糊):
$(document).ready(function() { $("#userBase .confirm").on("click",function() { var conBox = confirm("Are you sure ?"); var userLogin = "sampleOnly" //也许在你的HTML中有这个 var url = "mycontroller/delete/"+userLogin //现在只是一个大致的猜测 if(conBox){ $.post(url+userLogin,function(e){ var tr = $(this).closest('tr'); tr.css("background-color","#000000"); tr.fadeIn(1000).fadeOut(200, function(){ tr.remove(); }) }); } else { $(this).dialog("close"); } }); });
在这个问题中,出现的原因是用户点击了"Delete"链接,但删除操作没有成功从数据库中删除相应的数据。解决方法是通过jQuery和Spring框架来实现从数据库中删除数据。
在HTML代码中,通过一个表格展示了用户的信息,每一行都有一个"Delete"链接,点击这个链接会触发删除操作。
在Spring控制器中,有一个deleteUser方法,它接受一个userLogin参数,通过调用userService的remove方法来删除相应的用户数据。
在JavaScript代码中,通过使用jQuery来监听"Delete"链接的点击事件。当用户点击链接时,会弹出一个确认框,如果用户确认删除,则会通过Ajax发送一个DELETE请求到delete/${user.login}.json的URL。在请求的beforeSend函数中设置了请求头部的Accept和Content-Type。如果删除成功,会将相应的表格行的背景色设置为黑色,并通过fadeIn和fadeOut动画效果来使表格行消失。
通过以上的代码和解释,我们可以实现通过jQuery和Spring框架来从数据库中删除数据。