Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jquery ajax发布到CakePHP控制器_Php_Jquery_Ajax_Cakephp - Fatal编程技术网

使用jquery ajax发布到CakePHP控制器

使用jquery ajax发布到CakePHP控制器,php,jquery,ajax,cakephp,Php,Jquery,Ajax,Cakephp,我想用CakePHP将数据发布到控制器,但是使用JQuery发布总是会导致“post http//localhost/SA/myController/editUserData/1400(错误请求)”错误,我不知道为什么 在我看来,我有以下方法,将数据发布到控制器页面 $scope.saveUser = function() { $.ajax({ type: 'POST', url: '<?php echo Router::url(array(

我想用CakePHP将数据发布到控制器,但是使用JQuery发布总是会导致“post http//localhost/SA/myController/editUserData/1400(错误请求)”错误,我不知道为什么

在我看来,我有以下方法,将数据发布到控制器页面

   $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);
        }
    });

有什么想法吗?

两件事可能会把它抛在脑后

(1) Cake的内置安全性-因此免除该方法的安全性:

在AppController.php中

public function beforeFilter() {
    $this->Security->unlockedActions = array('editUserData')
}
(2) 决定editUserData方法呈现视图的方式,如果您回显“ok”,它仍会拉入默认布局并在视图中查找editUserData.ctp(如果找不到文件,则会导致错误),因此

不渲染任何内容,即.ctp视图文件和默认布局。。在editUserData($id)中,添加

要仅渲染视图文件而不渲染布局,请执行以下操作:

$this->autoLayout = false;
……最后,我在ajax调用中添加了这个参数:

dataType : 'html' // (or JSON?)

路由器的密钥“0”真奇怪。为什么不是“id”?并将dataType属性设置为ajax对象。@Alex没有那么奇怪,但没有必要,它可以在不显式指定键的情况下正常工作,使用像
id
这样的命名键,但是不起作用,因为这将指示命名元素,这将无法匹配可能的路由并生成类似于
/id:1
的URL。Thank@david.philip的可能重复项,问题出在布局中,我按照第2点中的建议解决了它,但这一行$this->AcsaUser->save($this->request->data('email');还是不行,你知道吗?或者我该如何编辑我的数据?很高兴你来对了!因此,假设“AcsaUser”模型正在myController中加载,则使用:$this->AcsaUser->ID=$ID设置要更新的模型ID;然后将其另存为您现有的格式,同样在您的ajax中,您拥有它的方式没有错,但是将其作为=>url:''保存会更整洁一些;是的,谢谢:)问题在于设置id。此行解决了$This->AcsaUser->id=$id的问题;
$this->autoLayout = false;
dataType : 'html' // (or JSON?)