Excluir solicitação no AJAX Dando uma resposta movida 301
-
27-09-2019 - |
Pergunta
Estou tentando fazer uma solicitação de exclusão usando o método Ajax de jQuery como segue
$.ajax(
{
type: 'DELETE',
url: '/tagz',
data: {id: taskId},
success: function(data)
{
console.log(data);
}
});
E quando vejo o console no Chrome, acho nos cabeçalhos de solicitação que uma solicitação GET é feita em vez de excluir. E no console do Firefox, vejo o seguinte.
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]
No lado do servidor, estou simplesmente mantendo o código a seguir.
$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;
}
Eu não vejo o pedido entrando no case 'DELETE'
. Está entrando no case 'GET'
em vez de.
A seguir, o arquivo .htaccess que estou usando no servidor para fins de URLs limpos.
RewriteEngine on
RewriteRule ^(.*)$ index.php [L,QSA]
Por favor me ajude a fazer solicitações de exclusão. Obrigado!
Solução
Eu entendi. :)
O problema estava com o URL ('/tagz
') Que eu estava passando $.ajax
. Quando eu mudei para /tagz/
(Adicionado outra barra para a frente no final) Começou funcionando bem em Chrome e Firefox.
Obrigado rapazes.
Outras dicas
O método de exclusão obviamente não é suportado pelo navegador Chrome.
Parece que o servidor da Web não permite o método de exclusão. Por que você não usa apenas o método de post para todas as suas solicitações e fornece uma "ação" variável que conterá a ação a ser realizada?