Java 如何基于ajax弹出窗口或对话框的输入执行控制器
在belwo代码“code_2”中,我有一个应用http方法DELETE的控制器,用于根据提供的id删除特定产品。 在“code_1”中,我试图创建一个ajax调用,在执行code_2中的控制器之前,向用户显示或呈现一个对话框或弹出窗口,其中包含YES和NO。换句话说,当客户端调用Java 如何基于ajax弹出窗口或对话框的输入执行控制器,java,ajax,spring,spring-boot,Java,Ajax,Spring,Spring Boot,在belwo代码“code_2”中,我有一个应用http方法DELETE的控制器,用于根据提供的id删除特定产品。 在“code_1”中,我试图创建一个ajax调用,在执行code_2中的控制器之前,向用户显示或呈现一个对话框或弹出窗口,其中包含YES和NO。换句话说,当客户端调用 /product/remove/2 应向他显示一个弹出窗口或对话框,显示是和否。当他单击是时,代码2中的控制器应正常执行。如果他单击“否”,则不会发生任何事情。只有对话框或弹出窗口消失 对于弹出窗口或对话框,我执行
/product/remove/2
应向他显示一个弹出窗口或对话框,显示是和否。当他单击是时,代码2中的控制器应正常执行。如果他单击“否”,则不会发生任何事情。只有对话框或弹出窗口消失
对于弹出窗口或对话框,我执行了如下操作:
<body>
<form action="http://www.google.com/search">
<input type="text" name="q" />
<input type="submit" value="Go" onclick="return confirm('Are you sure you want to search Google?')"/>
</form>
</body>
我找不到有“是”和“否”按钮的表单…您能帮我更正吗
我已经实现了下面的代码1和代码2
请让我知道代码是否正确或需要修改…我没有访问服务器的权限,而且,我对ajax和SpringMVC技术还不熟悉
代码_1:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Ajax confirm delete prodcut</title>
<script
src="${pageContext.request.contextPath }/resources/js/jquery-1.6.2.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#confirmremoveform').click(function() {
var idx = $('#idx').val();
var ans = confirm("Are you sure you want to delete this Record?");
if (ans) {
$.ajax({
type: "DELETE",
url: "/product/remove/" + idx,
dataType : 'json',
contentType : 'application/json',
beforeSend: function () {
$("#modal-book").modal("show");
},
success: function (data) {
$("#onsuccessfuldelete").text(data);
},
error: function (errormessage) {
alert(errormessage.responseText);
}
});
}
});
}
</script>
</head>
<body>
<form action="http://www.google.com/search">
<input type="text" name="q" />
<input type="submit" value="Go" onclick="return confirm('Are you sure you want to search Google?')"/>
</form>
</body>
</html>
Ajax确认删除prodcut
$(文档).ready(函数(){
$('confirmremoveform')。单击(函数(){
var idx=$('#idx').val();
var ans=confirm(“您确定要删除此记录吗?”);
如果(ans){
$.ajax({
键入:“删除”,
url:“/product/remove/”+idx,
数据类型:“json”,
contentType:'应用程序/json',
beforeSend:函数(){
美元(“#模态书”)。模态(“显示”);
},
成功:功能(数据){
$(“#onsuccessfuldelete”).text(数据);
},
错误:函数(错误消息){
警报(errormessage.responseText);
}
});
}
});
}
代码_2
@Controller
@RequestMapping("/product/remove")
public class RemoveProductPageController {
public final static String sRemoveProductFromListAttributeName = "removeProductFromList";
public final static String CONTROLLER_URL = "/product/remove";
public final static String DO_REMOVE_HANDLER_METHOD_URL = CONTROLLER_URL + "/{idx}";
@Autowired
private ProductService productService;
@RequestMapping(value = "/{idx}",
method = RequestMethod.DELETE)
@ResponseBody
public ResponseEntity<String> doRemove(@Validated @Size(min = 0) @PathVariable(required = true) int idx,
Model model) {
Product productToBeRemove = productService.getProductFromListByIdx(idx);
if (productToBeRemove == null) {
return new ResponseEntity<String>("no product is avaialble at index:" + idx, HttpStatus.NOT_FOUND);
}
model.addAttribute(RemoveProductPageController.sRemoveProductFromListAttributeName, productToBeRemove);
productService.removeProdcutFromListBxIdx(idx);
return new ResponseEntity<String>("product removed from index: " + idx, HttpStatus.OK);
}
}
@控制器
@请求映射(“/product/remove”)
公共类RemoveProductPageController{
公共最终静态字符串sRemoveProductFromListAttributeName=“removeProductFromList”;
公共最终静态字符串控制器_URL=“/product/remove”;
公共最终静态字符串DO_REMOVE_HANDLER_METHOD_URL=CONTROLLER_URL+“/{idx}”;
@自动连线
私人产品服务;
@RequestMapping(value=“/{idx}”,
方法=RequestMethod.DELETE)
@应答器
公共响应性doRemove(@Validated@Size(min=0)@PathVariable(required=true)int idx,
(模型){
Product productToBeRemove=productService.getProductFromListByIdx(idx);
if(productToBeRemove==null){
返回新的响应属性(“索引:+idx,HttpStatus.未找到任何产品可用”);
}
model.addAttribute(RemoveProductPageController.sRemoveProductFromListAttributeName,productToBeRemove);
productService.removeProdcutFromListBxIdx(idx);
返回新的响应属性(“从索引中删除的产品:+idx,HttpStatus.OK”);
}
}
尝试使用(SweetAlert)。它是javascript弹出窗口的可定制替代品
你可以从很多选项中选择
例如:
JSP,
单击“删除”按钮
$('#[idOfDeleteButton]').click(function (e) {
e.preventDefault();
swal({
title: 'Are you sure you want to delete this record',
type: 'warning',
showCancelButton: true
}).then(function () {
//execute once user confirms else nothing happens
var deleteLink = "[link to controller]?id="+[idTobeDeleted];
$.ajax({
url: deleteLink ,
contentType: "application/json",
type: 'GET',
success: function (res) {
//res is the string returned in the controller
if (res === "Success!") {
swal({
title: res,
text: "Delete Successful!",
type: 'success'
});
} else {
swal({
title: res,
text: "Deleting record Failed!",
type: 'error'
});
}
}
});
});
});
上面的代码中,
#confirmremoveform
在哪里?我找到了一个使用它的示例。我仍在学习它。也许你可以指导我好的,也可以从哪里获得idx
,你的记录是否以表格格式显示,即:表格中的每一行都有delete
按钮?