DELETE Anfrage in ajax geben 301 verschobene Antwort
-
27-09-2019 - |
Frage
Ich versuche, eine Löschanfrage mit Ajax-Methode von Jquery zu machen, wie folgt
$.ajax(
{
type: 'DELETE',
url: '/tagz',
data: {id: taskId},
success: function(data)
{
console.log(data);
}
});
Und wenn ich die Konsole in Chrom sehen, die ich in den Request-Header finden, dass eine GET-Anfrage statt DELETE gemacht wird. und in firefox tröste ich folgendes zu sehen.
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]
Auf Server-Seite bin ich einfach den folgenden Code beibehalten wird.
$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;
}
Ich sehe nicht die Anforderung in die case 'DELETE'
bekommen. Es wird in den case 'GET'
statt.
Im Anschluss an der .htaccess-Datei, dass ich auf dem Server zum Zweck der sauberen Urls verwenden.
RewriteEngine on
RewriteRule ^(.*)$ index.php [L,QSA]
Bitte helfen Sie mir DELETE-Anfragen zu machen. Dank!
Lösung
Ich habe es. :)
Das Problem war mit der URL ( '/tagz
'), dass ich in $.ajax
vorging. Als ich es /tagz/
geändert (hinzugefügt einen weiteren Schrägstrich am Ende) begann es funktioniert gut in Chrome und Firefox.
Danke Jungs.
Andere Tipps
Die DELETE-Methode ist offensichtlich nicht von dem Chrome-Browser unterstützt.
Es sieht aus wie der Web-Server nicht für DELETE-Methode erlaubt. Warum gehst du nicht nur POST-Methode für alle Ihre Anfragen verwenden und stattdessen eine Variable „Aktion“ liefern, der die Aktion enthalten wird geführt werden?