jQuery AJAX POST 无法识别 CakePHP 3

jQuery AJAX POST not recognized CakePHP 3

所以,我有一些简单的代码设置,为了测试目的,我已经将它缩减到绝对必需品。这是我的 javascript:

$('a#delete').on('click', function(e) {
    e.preventDefault();
    $.post($(this).attr('href'), $('input.delete:checked').serialize());
})

这是我的控制器代码:

public function delete() {
    debug($this->request->is('ajax'));
    debug($this->request->is('post'));
    debug($this->request->data);
    die();
}

目前我有一个用于测试的复选框:

<input type="checkbox" name="delete_portfolio" class="delete" value="15">

我已经使用 Fiddler 验证它正在发送一个带有“delete_portfolio=15”数据的 POST 请求。但是,$this->request->is('post') 返回 false,即使这正是发送的内容。而 $this->request->data 是空的。有趣的是 $this->request->is('get') 实际上 returns 是真的,但是 $this->request->query 仍然是空的。

我只是想弄清楚我在向 Cake 发送 AJAX POST 请求时做错了什么。

编辑

我只是想包含一些我在这里找到的新信息。我最后添加了:

debug($_SERVER['REQUEST_METHOD']);
debug($_POST);

到我的控制器代码,看看 PHP 看到了什么请求方法,结果 returns 'POST' 和预期的一样 returns 正确的数据,所以只有 CakePHP 3 没有将其视为 POST 并且没有看到数据,也许这是一个错误?

我终于弄清楚出了什么问题,以及其他人绝对应该考虑的问题。我启用了安全组件,它将不安全的请求 (ajax) 重定向到安全请求 (https)。因为发生了这种重定向,它正在将我的请求更改为 GET 请求,并在我的表单被更改时黑洞化我。要解决此问题:

$this->Security->config('unlockedActions', ['delete']);

已添加到我的控制器的 beforeFilter 功能中。