Запрос на УДАЛЕНИЕ в ajax, дающий 301 перемещенный ответ
-
27-09-2019 - |
Вопрос
Я пытаюсь сделать запрос на удаление, используя ajax-метод jquery следующим образом
$.ajax(
{
type: 'DELETE',
url: '/tagz',
data: {id: taskId},
success: function(data)
{
console.log(data);
}
});
И когда я вижу консоль в Chrome, я нахожу в заголовках запросов, что вместо УДАЛЕНИЯ выполняется запрос GET.и в консоли firefox я вижу следующее.
23:50:52:658: Network: DELETE http://test.goje87.com/tagz [HTTP/1.1 301 Moved Permanently 947ms]
23:50:53:614: Network: GET http://test.goje87.com/tagz/ [HTTP/1.1 200 OK 400ms]
На стороне сервера я просто поддерживаю следующий код.
$reqMethod = $_SERVER['REQUEST_METHOD'];
switch($reqMethod)
{
case 'GET':
Utils::printR('Will provide the resource.');
selectObjects();
break;
case 'POST':
Utils::printR('Will create a new record.');
createObject();
break;
case 'PUT':
Utils::printR('Will update the record.');
break;
case 'DELETE':
Utils::printR('Will delete the record.');
Utils::output($_SERVER);
break;
}
Я не вижу, чтобы запрос попадал в case 'DELETE'
.Это переходит в case 'GET'
вместо этого.
Ниже приведен файл .htaccess, который я использую на сервере для очистки URL-адресов.
RewriteEngine on
RewriteRule ^(.*)$ index.php [L,QSA]
Пожалуйста, помогите мне с отправкой запросов на УДАЛЕНИЕ.Спасибо!
Решение
Я понял это.:)
Проблема была с URL-адресом ('/tagz
'), что я проходил мимо в $.ajax
.Когда я изменил его на /tagz/
(добавлена еще одна косая черта в конце) он начал нормально работать в Chrome и Firefox.
Спасибо, ребята.
Другие советы
Способ удаления, очевидно, не поддерживается браузером Chrome.
Похоже, веб-сервер не позволяет удалить метод удаления. Почему вы не просто используете метод Post для всех ваших запросов и поставке вместо переменной «Action», который будет содержать действие, которое будет передано?