我正在尝试弄清楚如何仅使用 Javascript 发出 DELETE 请求。我有一个用 Java Spring 编写的服务,其中我正在处理的 url 的 Controller 具有 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();
}
当我想使用 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 仅接受 GET
和 POST
。如何仅使用 JavaScript 发出删除请求?
最佳答案
根据信息,您的浏览器似乎实际上正在创建 DELETE
请求,因为服务器给你返回了 406 (Not Acceptable)
回复。如果您的客户一开始就没有发送请求,那么它就不会这样做。这意味着服务器收到了您的DELETE
请求并决定不处理它。因此,您需要查看服务器的 API,了解什么为您提供了 HTTP406,以及您的请求需要进行哪些不同才能使其正常工作。
调试此类事情的一个好方法是通过浏览器开发人员工具。大多数浏览器都有一个选项卡,显示浏览器发出的 HTTP 请求和响应。今后,这将使您更轻松地验证这些内容。
关于javascript - 如何使用 Javascript(不是 jQuery)发出 DELETE http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39457083/