2012-06-28 65 views
2

CGridView widget已具有查看,更新_view文件中CViewList小窗口链接,DETE option.But我用我的基于jQuery Mobile的项目CListView中小部件,但在创建AJAX链接删除选项有问题。不知道如何在_view.php(视图文件)和它的renderPartial()视图文件中创建一个ajax删除链接,以在成功删除plz帮助之后消失该栏。这是用于编辑和删除的_view.php文件链接。如何创建Ajax删除

<?php 
echo CHtml::link(CHtml::encode($data->id), 
    array('editmember1', 'id' => $data->id), 
    array('data-role' => 'button', 'data-icon' => 'star') 
); 

echo CHtml::link(CHtml::encode($data->id), $this->createUrl('customer/delete', array('id' => $data->id)), 
    array(
     // for htmlOptions 
     'onclick' => ' {' . CHtml::ajax(array(
     'beforeSend' => 'js:function(){if(confirm("Are you sure you want to delete?"))return true;else return false;}', 
     'success' => "js:function(html){ alert('removed'); }")) . 
     'return false;}', // returning false prevents the default navigation to another url on a new page 
     'class' => 'delete-icon', 
     'id' => 'x' . $data->id) 
    ); 

>

+0

链接几乎是罚款,你想完成什么? –

+0

@ bool.dev其未删除的记录,在显示任何错误:( – Coder

+0

确定,目前键入答案 –

回答

5

这是发生,因为:

  1. 正确的动作不会被调用,因为你还没有设置jQuery.ajax()url财产。你应该知道Yii的CHtml::ajax是建立在jQuery的ajax之上的。所以,你可以添加:

    CHtml::ajax(array(
        ... 
        'url'=>$this->createUrl('customer/delete', array('id' => $data->id,'ajax'=>'delete')), 
        ... 
    )) 
    

    而且在url我传递一个Ajax参数,这样的动作都知道,这是一个Ajax请求明确。

  2. 然后默认情况下控制器动作(即Gii生成的CRUD)期望请求是帖子类型,您可以在客户/删除操作行中看到这一点:if(Yii::app()->request->isPostRequest){...}。所以,你必须发送POST请求,再次修改了ajax选项:

    CHtml::ajax(array(
        ... 
        'type'=>'POST', 
        'url'=>'',// copy from point 1 above 
        ... 
    )) 
    
  3. 另外,您也可以使用CHtml::ajaxLink()

  4. 要更新删除后CListView中,调用$.fn.yiiListView.update("id_of_the_listview");。喜欢的东西:

    CHtml::ajax(array(
        ... 
        'type'=>'POST', 
        'url'=>'',// copy from point 1 above 
        'complete'=>'js:function(jqXHR, textStatus){$.fn.yiiListView.update("mylistview");}' 
        ... 
    )) 
    
+0

我已经更新了答案,包括如何更新(删除已删除CListView中吧) –

+0

感谢@ bool.dev真的很有帮助。 – Coder

+0

很高兴帮助.. –