簡體   English   中英

Zend Ajax無法刪除

[英]Zend Ajax can't delete

我有一個名為state的表, state_namestate_idstate_name列。 目前,我可以添加和編輯新狀態,但是不能刪除狀態。 我的代碼可能出什么問題了?

{title:"Actions",template:'<a class="left" onclick="javascript:openEditStatePopup(this);">Edit</a>' + 
    '<a class="right" onclick="javascript:deleteState(this);">Delete</a>'
    ,width:120,sortable:false}

此代碼段是視圖代碼,當我單擊鏈接時,它將執行以下JavaScript:

function deleteState(element)
{
    var countryDetail = {};
    var GriddataItem = $("#state_grid").data("kendoGrid").dataItem($(element).closest("tr"));
    countryDetail.state_id =GriddataItem.state_id;
    countryDetail.state_name = GriddataItem.state_name;
    // alert(countryDetail.state_id);
    $.ajax({
        url:"<?= $this->baseUrl('admin/state/delete')?>",
        data: {state_id :  countryDetail.state_id},
        dataType: "json",
        type: "POST",
        success: function(){
            alert('success');
        },
        failure:function(){
            alert('not working');
        }
    });
}

當我在$.ajax調用之前回顯alert(countryDetail.state_id) ,我可以獲得正確的狀態ID。

我的刪除控制器是:

public function deleteAction()
{

    $state = $this->_request->_getPost('state_id');
    $stateMapper = new Application_Model_Mapper_StateMapper();
    $stateMapper->delete($state);
}

並且要刪除的模型映射器是:

public function delete(Application_Model_State $state)
{
    $data = $state->toArray();
    $adapter = $this->getDbTable()->getAdapter()->delete(array('state_id=?'=>$data['state_id']));
}

在您的控制器動作deleteAction()您將獲得POST參數'state_id'

$state = $this->_request->_getPost('state_id');
$stateMapper = new Application_Model_Mapper_StateMapper();
$stateMapper->delete($state);

並且您正在$stateMapper->delete($state);中傳遞該$state $stateMapper->delete($state); 功能

在您的模型類函數public function delete(Application_Model_State $state)定義中,您傳遞的不是狀態模型對象和狀態ID,因此應將其更改為

public function delete($state_id)
{
    $adapter = $this->getDbTable()->getAdapter()->delete(array('state_id=?'=>$state_id));

}

那它應該工作了...

我還沒看到的另一件事

failure:function(){
      alert('not working');
}

而是

error:function(){
    alert('not working');
}

嗨,您需要編寫deleteAction ,如下所示

public function deleteAction()
{


    $state = $this->_getParam('state_id');
    $stateMapper = new Application_Model_Mapper_StateMapper();
    $stateId = $stateMapper->delete($state);
    $this->_helper->json(array('success'=>1));
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM