Cakephp,用Js helper删除动作并渲染ajax

时间:2014-05-29 11:19:06

标签: javascript php ajax cakephp

我使用Js Helper,所以我可以从我的表中删除一条记录。 要在我的视图中这样做,并命名为“myclients'我使用名为"删除"的链接因此,当我点击它将删除我的表中的一条记录,并将使用ajax更新表而不刷新我的页面。

<?php echo $this->Js->link(
                    'Remove', 
                    '/Users/remove/'.$u['User']['id'].'/page:'.$this->Paginator->counter(array('format' => '%page%')), 
                    array('target' => '_self', 'update' => '#my_listview', 'escape' => false, 'confirm' => 'Are you sure?')); 
                    ?>

关注我的控制器后,我使用以下代码:

public function remove($id=null){

                $this->User->id = $id;
        if (!$this->User->exists()) {
            $this->Session->setFlash(__('invalid user'), 'default', array ('class' => 'primary alert'));

            throw new NotFoundException(__('invalid user'));
        }

                if ($this->User->delete()) {
            $this->Paginator->settings = array(
                'limit' => 10,
                'order' => array(
                    'User.id' => 'asc'
                )
            );          
            $this->set('Users', $this->paginate('User'));
            $this->render('myclients', 'ajax');
        }

这似乎工作正常,但只有一次,这将删除并更新我的表,但当我在其他记录中第二次点击时,它将删除但它不会更新我的表它将刷新我的页面和只显示我的表格的页面空白页面所有css似乎都没有加载。 请注意,确认问题仅在第一次出现时才显示。

提前致谢。

您可以在github上看到我的观点。请注意,我在stackoverflow上放置的代码使用不同的名称进行转换,但遵循相同的逻辑。

1 个答案:

答案 0 :(得分:0)

也许我错了,但让我们看看我是否在猜测发生了什么。

  1. 您点击了ajax链接
  2. 用户已删除
  3. 您使用来自myclients视图
  4. 的新数据更新表格或用户列表
  5. 更新表(或列表)具有删除链接,但一旦更新,链接就会停​​止工作
  6. 如果是这样,问题是当你通过ajax加载内容时,不会将javascript放入其中,除非你告诉它这样做。

    在您的myclient.ctp文件中输入此代码

    if($this->layout == 'ajax')
        echo $this->Js->writeBuffer();