我想将数据发布到CakePHP中的控制器,但是使用JQuery发布总是会导致" POST http // localhost / SA / myController / editUserData / 1 400(错误请求)"错误,我无法弄清楚原因。
在我看来,我有以下方法,将数据发布到控制器页面
$scope.saveUser = function() {
$.ajax({
type: 'POST',
url: '<?php echo Router::url(array(
'controller' => 'myController',
'action' => 'editUserData',
0 => $userInfo['user']['id'],));?>',
data: { email: 'cabraham@delhi.k12'},//"my edited data for example"
success: function (data) {
alert(data);
}
});
我的控制器方法如下所示:
public function editUserData($id) {
if($this->request->is('post') || $this->request->is('put')) {
$this->AcsaUser->save($this->request->data('email'));//edit and save the new data
echo 'ok';
}
}
任何想法??
答案 0 :(得分:0)
可能抛出它的两件事。
(1)Cake的内置安全性 - 因此免除了该方法:
在AppController.php中
public function beforeFilter() {
$this->Security->unlockedActions = array('editUserData')
}
(2)决定你希望你的editUserData方法如何渲染视图,如果你回显出'ok',它仍会拉入默认布局并在视图中寻找editUserData.ctp(和如果找不到文件会导致错误,所以
要在editUserData($ id)中不渲染任何内容,即.ctp视图文件和默认布局..,请添加
$this->autoRender = false;
仅渲染视图文件而不是布局:
$this->autoLayout = false;
......最后我只是在ajax调用中添加了这个参数:
dataType : 'html' // (or JSON?)