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
功能中。
所以,我有一些简单的代码设置,为了测试目的,我已经将它缩减到绝对必需品。这是我的 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
功能中。