【问题标题】:Cakephp, delete action with Js helper and render ajaxCakephp,使用 Js 助手删除操作并渲染 ajax
【发布时间】:2014-05-29 11:19:05
【问题描述】:

我正在使用 Js Helper,因此我可以从我的表中删除一条记录。 为此,在名为“myclients”的视图中,我使用了一个名为“Remove”的链接,因此当我单击它时,它将从我的表中删除一条记录,并将使用 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 上的代码被翻译成不同的名称,但遵循相同的逻辑。

【问题讨论】:

  • 看来你有某种js问题。因此,第二次您不通过 ajax 调用删除操作,而是以“传统”方式点击链接。所以浏览器渲染myclient 视图。可以吗?
  • 对!似乎蛋糕正在寻找删除视图,但我想要一个 ajax 请求,我不需要创建删除视图。我想渲染我的客户视图。可能我必须通过传统方法来做到这一点..
  • 尝试发布您的 myclients.ctp 文件
  • @arilia,我已经更新了我的问题。我没有翻译代码,但它遵循与这个问题相同的逻辑。
  • 我没有在您的代码中看到我建议在下面的答案中添加的行。

标签: javascript php ajax cakephp


【解决方案1】:

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

  1. 您点击了一个 ajax 链接
  2. 用户被删除
  3. 您使用来自myclients 视图的新数据更新表或用户列表
  4. 更新表(或列表)有删除链接,但更新后链接停止工作

如果是这样,问题是当您通过 ajax cake 加载内容时,除非您告诉它这样做,否则不会将 javascript 放入其中。

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

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

【讨论】:

  • 在 3. 它只会刷新表,我的意思是。是的 4 在我删除一行后刷新表后,链接停止工作。我试过你说的,但似乎没有用。
  • 该代码位于视图的末尾。请编辑您的问题并发布您的视图文件
猜你喜欢
  • 2012-03-03
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
  • 2017-11-10
  • 2012-01-31
  • 2014-12-18
相关资源
最近更新 更多