DELETE请求移动响应
问题描述:
我试图使用jQuery的AJAX方法如下DELETE请求移动响应
$.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]
请帮我在做删除请求。谢谢!
答
我明白了。 :)
问题是与我通过$.ajax
传递的网址('/tagz
')。当我将其更改为/tagz/
(在最后添加了另一个正斜杠)时,它在Chrome和Firefox中开始正常工作。
谢谢你们。
答
Chrome浏览器显然不支持DELETE方法。
答
它看起来像Web服务器不允许使用DELETE方法。你为什么不对所有的请求使用POST方法,而是提供一个变量“action”来包含要执行的动作?
DELETE和PUT是有效的HTTP请求方法,请参见第9.6和9.7节:http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html – PatrikAkerstrand 2010-10-03 18:48:55
没有删除或放入jQuery.ajax( ) – 2010-10-03 18:51:25
够公平的。似乎我不能删除倒票,除非答案被编辑? – PatrikAkerstrand 2010-10-03 19:05:03