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!

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top