2012-06-28 64 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

很高興幫助.. –