УДАЛИТЬ запрос в ajax дает 301 перемещенный ответ - PullRequest
3 голосов
/ 03 октября 2010

Я пытаюсь сделать запрос на удаление, используя ajax-метод jquery следующим образом

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

И когда я вижу консоль в chrome, я нахожу в заголовках запроса, что вместо GET сделан запрос 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]

Пожалуйста, помогите мне в выполнении запросов DELETE.Спасибо!

Ответы [ 3 ]

2 голосов
/ 05 октября 2010

Я понял. :)

Проблема была с URL ('/tagz'), который я передавал в $.ajax. Когда я изменил его на /tagz/ (добавил еще один слеш в конце), он начал нормально работать в Chrome и Firefox.

Спасибо, ребята.

1 голос
/ 03 октября 2010

Метод DELETE явно не поддерживается браузером Chrome.

0 голосов
/ 03 октября 2010

Похоже, что веб-сервер не допускает метод УДАЛИТЬ.Почему бы вам просто не использовать метод POST для всех ваших запросов и вместо этого предоставить переменную "action", которая будет содержать действие, которое нужно выполнить?

...