java - 发送 GET 方法而不是 DELETE

标签 java html ajax spring thymeleaf

我正在尝试编写应用程序的前端,但遇到了问题。我一直在尝试使用 AJAX 实现 DELETE 方法,但根据 Spring,当我运行代码时会发送一个 GET。

HTML代码:

    <tr th:each="attraction : ${attractions}" th:object="${attraction}">
    <td th:text="*{name}"></td>
    <td th:text="*{latitude}"></td>
    <td th:text="*{city}"></td>
    <td><a th:href="|/edit/*{id}|">EDIT</a></td>
    <script>
        function sendDelete(event) {
            xhttp.preventDefault();
            xhttp.open("DELETE", this.href);
            xhttp.send();
        }
    </script>
    <td><a th:href="|/delete/*{id}|" onclick="sendDelete(event);">DELETE</a></td>
</tr>

Spring 代码:

  @DeleteMapping("/delete/{id}")
  String delete(@ModelAttribute Attraction attraction) {
   attractionService.delete(attraction);
   return "redirect:/";
  }

我该如何解决这个问题?提前谢谢你。

最佳答案

您绕了很远的路才解决这个问题。

只要您在 JavaScript 中处理它并调用 preventDefault,链接标记就可以发送您希望的任何 http 方法。

但是您必须在传递给点击处理程序的事件上执行此操作,而不是在 xhttp pbject 上执行。所以你应该在你的事件处理程序上完成

event.preventDefault()

而不是:

xhttp.preventDefault()

您的表单 hack 不是惯用的。它会吓坏下一个处理该代码的人!

关于java - 发送 GET 方法而不是 DELETE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54102607/

相关文章:

html - 什么是 href ="#",为什么要使用它?

javascript - 表单数据为空 - laravel 5.4

javascript - Jquery Ajax GET方法实现

java - Java 中的乒乓球游戏

java - 测试 List<List<T>> 包含任何顺序的相同项目

javascript - AngularJS 从 Java Map 填充 ng-options 选项。 (排序问题)

html - 如何将文本环绕在 float 的固定图像周围?

java - JSON 到 hashmap ( jackson )

javascript - 在 Sinatra 应用程序中将 Ruby 数据发送到 Javascript

python - Gmail 是如何做到的?