[英]Zend Ajax can't delete
我有一個名為state
的表, state_name
有state_id
, state_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.