使用springmvc和Thymeleaf的Ajax请求

使用springmvc和Thymeleaf的Ajax请求,ajax,spring-mvc,thymeleaf,Ajax,Spring Mvc,Thymeleaf,在网页中,我想提供一些按钮来执行一些操作,例如,删除用户。我不想为每个按钮创建一个表单,所以我认为ajax post请求是实现这一点的最佳方式。出于某种原因,该URL不会被控制器截获,只有当我添加项目名称时,它才会工作(例如URL:“projectname/users/remove”)。显然,我不想在每个ajax请求上硬编码项目名称,也不想使用项目名称变量。通过仅为url/操作指定“/users/remove”,发出此类请求的正确方式是什么 function removeUser(userid)

在网页中,我想提供一些按钮来执行一些操作,例如,删除用户。我不想为每个按钮创建一个表单,所以我认为ajax post请求是实现这一点的最佳方式。出于某种原因,该URL不会被控制器截获,只有当我添加项目名称时,它才会工作(例如URL:“projectname/users/remove”)。显然,我不想在每个ajax请求上硬编码项目名称,也不想使用项目名称变量。通过仅为url/操作指定“/users/remove”,发出此类请求的正确方式是什么

function removeUser(userid){    
    var r = confirm("Are you sure you want to delete user '" + userid + "''?");

    if (r == true) {
        $.ajax({
            type : "POST",
            url : "/users/remove",
            data : {
               userid: userid
            },
            success : function(response) {
               alert("Suceeded!");
            },
            error : function(e) {
               alert('Failed!: ' + e);
            }
        }); 
    }
}
提前谢谢
Diego

如果您在一个精确的页面url上,例如:webpage.com,并且您希望将请求发送到webpage.com/users/remove

删除前导“/”,如下所示:

url : "users/remove"
您应该像这样发送请求,这样它只会添加到当前url,第一个“/”表示您希望转到根目录,这在eclipse和IntelliJ中是不同的


如果您想要高级解决方案,应该使用jsp和c:url创建一个变量。

谢谢您的评论。我绝对不想限制我的web应用程序只在root上工作。至于变量,这可能是一个解决方案,但如果上下文知道web应用程序的名称(部署url),我为什么要费心添加它呢?到目前为止,当我做一些类似的事情时,它可以很好地处理表单:
你误解了我,这个解决方案对我很有效:我的意思是:将第一个“/”去掉,它就不会进入根目录。谢谢!删除前导“/”确实有效。很奇怪,Thymeleaf的文档说:“上下文相关URL以/”开头。我很高兴有人打电话给控制员。