Java 如何基于ajax弹出窗口或对话框的输入执行控制器

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中的控制器应正常执行。如果他单击“否”,则不会发生任何事情。只有对话框或弹出窗口消失 对于弹出窗口或对话框,我执行

在belwo代码“code_2”中,我有一个应用http方法DELETE的控制器,用于根据提供的id删除特定产品。 在“code_1”中,我试图创建一个ajax调用,在执行code_2中的控制器之前,向用户显示或呈现一个对话框或弹出窗口,其中包含YES和NO。换句话说,当客户端调用

/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
按钮?