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

aCa*_*lla 0 javascript ajax httprequest http-delete

我正试图弄清楚如何使用Javascript来发出DELETE请求.我有一个用Java Spring编写的服务,其中我正在处理的url的控制器method = RequestMethod.DELETE.我的网址是,比如说http://192.168.50.51/my-service/deleteLocation/{value1}/{value2}/{value3}.在我的JavaScript中,我有一个像这样的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();

}
Run Code Online (Sandbox Code Playgroud)

当我想使用DELETEurl时,我有一个事件处理程序附加到运行此方法的按钮:

    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);
}
Run Code Online (Sandbox Code Playgroud)

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

我已经读过XMLHttpRequest只接受GETPOST.如何使用JavaScript进行删除请求?

Kne*_*tic 5

给出的信息,它看起来像你的浏览器实际进行DELETE的请求,因为服务器给你回一个406 (Not Acceptable)响应.如果您的客户端从未在第一时间发送请求,则不会这样做.这意味着服务器收到了您的DELETE请求并决定不进行处理.因此,您需要查看服务器的API,以了解为您提供HTTP406的内容以及使您的请求工作的要求有何不同.

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