3

我正在尝试使用 jquery 的 ajax 方法发出删除请求,如下所示

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

当我在 chrome 中看到控制台时,我在请求标头中发现发出的是 GET 请求而不是 DELETE。在 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'相反,它正在进入。

以下是我在服务器上使用的用于清理 url 的 .htaccess 文件。

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

请帮助我提出删除请求。谢谢!

4

3 回答 3

2

我得到了它。:)

问题出在/tagz我传入的 url (' ') 上$.ajax。当我将其更改为/tagz/(在末尾添加另一个正斜杠)时,它开始在 Chrome 和 Firefox 中正常工作。

多谢你们。

于 2010-10-05T08:42:31.240 回答
1

Chrome浏览器显然不支持DELETE方法。

于 2010-10-03T18:47:05.547 回答
0

看起来 Web 服务器不允许使用 DELETE 方法。为什么不对所有请求使用 POST 方法,而是提供一个包含要执行的操作的变量“action”?

于 2010-10-03T18:52:36.757 回答