如何使用 Javascript(而不是 jQuery)发出 DELETE http 请求

How to make a DELETE http request with Javascript (not jQuery)

我正在尝试弄清楚如何仅使用 Java 脚本发出删除请求。我有一个用 Java Spring 编写的服务,其中我正在处理的 url 的控制器有 method = RequestMethod.DELETE。我的 url 是 http://192.168.50.51/my-service/deleteLocation/{value1}/{value2}/{value3}。在我的 Java 脚本中,我有一个 AJAX 函数,如下所示:

    ajaxFunction : function(url, callback, httpMethod) {

    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (xhttp.readyState == 4 && xhttp.status == 200) {
            var jsonParse = JSON.parse(xhttp.responseText);
            callback(jsonParse);
        }
    }
    xhttp.open(httpMethod, url, true);
    xhttp.send();

}

当我想使用 DELETE url 时,我将事件处理程序附加到运行此方法的按钮:

    deleteConfirm : function() {
    var valuel         = this.value1;
    var value2         = document.getElementById('element-id').getAttribute('data-element');
    var value3         = document.getElementById('element-id').getAttribute('data-element2');
    var url            = 'http://192.168.50.51/my-service/deleteInfo/' + value1 + '/' + value2 + '/' + value3;
    var httpMethod     = 'DELETE';
    var deleteCallback = function() { alert('deleted!'); }
    this.ajaxFunction(url, deleteCallback, httpMethod);
}

但是,我的控制台中不断出现错误:my-javascript.js:59 DELETE http://192.168.50.51/my-service/deleteInfo/123456789/123-456-7AB/12699 406 (Not Acceptable)

我读到 XMLHttpRequest 只接受 GETPOST。如何仅使用 JavaScript 发出删除请求?

根据这些信息,您的浏览器 似乎是 实际上发出了 DELETE 请求,因为服务器给了您一个 406 (Not Acceptable) 响应。如果您的客户从一开始就没有发送请求,它就不会这样做。这意味着服务器收到了您的 DELETE 请求并决定不处理它。因此,您需要查看服务器的 API 以查看是什么为您提供了 HTTP406 以及您的请求需要有哪些不同才能使其正常工作。

调试此类内容的一个好方法是使用浏览器开发人员工具。大多数浏览器都有一个选项卡,向您显示浏览器发出的 HTTP 请求和响应。这将使您更容易验证这些事情,继续前进。