所以,我有一些简单的代码设置,我已经将它简化为仅仅用于测试目的的基本要素。下面是我的javascript:jQuery AJAX POST未被识别CakePHP 3
$('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">
我一直在使用验证提琴手,它发送POST
请求数据“delete_portfolio=15
”。但是,$this->request->is('post')
返回false,即使这正是发送的内容。 $this->request->data
为空。有趣的是,$this->request->is('get')
实际上返回true,但$this->request->query
仍然是空的。
我只是想弄清楚我在做什么错误发送一个AJAX POST
请求蛋糕。
编辑
我只是想包括我在这里找到了一些新的信息。最后我补充说:
debug($_SERVER['REQUEST_METHOD']);
debug($_POST);
要我控制器代码,看看PHP所看到的请求的方法,原来它返回'POST'
预期,并返回正确的数据,所以才CakePHP的3,这不是把它看作POST并没有看到数据,也许这是一个错误?
$('a#delete')不应该是一个标识为的标识,并且在您的HTML中,我看到的输入是一类“删除”而不是标识。我无法想象你如何在GET请求中获得价值,正如你所说的。 – Michel
所以,问题不在于单击事件不起作用。正如我在问题中所述,我可以看到带有Fiddler的POST请求以及数据。我报告了我从控制器返回的内容,该控制器也收到了请求。我没有在HTML中包含我点击的链接,因为我觉得这是不相关的,因为问题不在于点击事件。 –
检查'REQUEST_METHOD' [** server var **](http://php.net/manual/en/reserved.variables.server.php),如果在确定发送POST时不是'POST' '请求,那么你的服务器/ PHP安装需要一个或两个bitchslaps。 – ndm