Domanda

Sto cercando di fare una richiesta di eliminazione utilizzando Ajax metodo di jQuery come segue

$.ajax(
{
  type: 'DELETE',
  url: '/tagz',
  data: {id: taskId},
  success: function(data)
  {
    console.log(data);
  }
});

E quando vedo la console in cromo, trovo nelle intestazioni di richiesta che una richiesta GET è fatto invece di CANC. e in Firefox consolo vedo quanto segue.

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]

Sul lato server Sto semplicemente mantenendo il seguente codice.

$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;
}

Non vedo la richiesta di entrare nel case 'DELETE'. Si sta facendo nella case 'GET' invece.

In seguito è il file .htaccess che sto usando sul server al fine di URL puliti.

RewriteEngine on
RewriteRule ^(.*)$ index.php [L,QSA]

Ti prego, aiutami a fare richieste DELETE. Grazie!

È stato utile?

Soluzione

I got it. :)

Il problema era con l'url ( '/tagz') che passavo in $.ajax. Quando ho cambiato in /tagz/ (aggiunto un altro slash alla fine) ha iniziato bene a lavorare in Chrome e Firefox.

Grazie ragazzi.

Altri suggerimenti

Il metodo DELETE è, ovviamente, non supportato dal browser Chrome.

Sembra che il server web non consente per il metodo DELETE. Perché non è sufficiente utilizzare il metodo POST per ogni tua richiesta e fornire invece un ' "azione" variabile che conterrà l'azione da effettuare?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top