您应该检查用于将数据发送到脚本的请求方法,如下所示:
switch ($_SERVER['REQUEST_METHOD'])
{
case 'POST':
{
// do something
}
break;
case 'GET':
{
// do something else
}
break;
case 'PUT':
{
// your snippet goes here
}
break;
case 'DELETE':
{
// do something when request method == DELETE
}
break;
}
您发布的代码是您在 REQUEST_METHOD 为 PUT 或 DELETE 时应该使用的代码。这根本不是黑客。
您还可以将 Backbone 配置为通过 POST 发送数据:
Backbone.emulateHTTP = true;
来自 Backbone 的手册:
如果您想使用不支持 Backbone 的默认 REST/HTTP 方法的旧版 Web 服务器,您可以选择打开 Backbone.emulateHTTP。设置此选项将使用 HTTP POST 伪造 PUT 和 DELETE 请求,使用 true 方法设置 X-HTTP-Method-Override 标头。如果 emulateJSON 也打开,则 true 方法将作为附加的 _method 参数传递。