2016-09-12 5 views
0

Я пытаюсь выяснить, как сделать запрос DELETE, используя только Javascript. У меня есть служба, написанная на Java Spring, где контроллер для URL-адреса, над которым я работаю, имеет method = RequestMethod.DELETE. Мой url, скажем, http://192.168.50.51/my-service/deleteLocation/{value1}/{value2}/{value3}. В моей JavaScript, у меня есть функция AJAX выглядеть примерно так:Как сделать DELETE-запрос HTTP с Javascript (не jQuery)

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?

+1

Ваш сервис отклоняет его. Почему он отвергает это? –

+2

'406 Not Acceptable' исходит от сервера, а не от вашего клиента. Вы правильно используете XHR, но убедитесь, что вы выполняете DELETE правильно в соответствии с документами webservice. – Dai

ответ

5

Учитывая информацию, она выглядит ваш браузер это фактически сделав DELETE запрос, поскольку сервер дал вам обратно 406 (Not Acceptable) ответ. Это не сделало бы этого, если бы ваш клиент никогда не отправлял запрос в первую очередь. Это означает, что сервер получил ваш запрос DELETE и решил, что он его не обработает. Таким образом, вам нужно посмотреть API-интерфейс сервера, чтобы узнать, что дает вам HTTP406 и что должно отличаться от вашего запроса, чтобы он работал.

Хороший способ отладки этих вещей осуществляется через инструменты разработчика браузеров. В большинстве браузеров есть вкладка, в которой отображаются HTTP-запросы и ответы, которые сделал браузер. Это облегчит вам проверку этих вещей в будущем.