使用ajax进行CakePHP删除

使用ajax进行CakePHP删除,php,jquery,ajax,cakephp,Php,Jquery,Ajax,Cakephp,Ajax调用: public function delete() { $this->autoRender = false; $this->layout = 'ajax'; $id = $_GET['id']; $this->loadModel('Teacher'); $this->Teacher->delete($id); //$this-

Ajax调用:

 public function delete() 
    {
        $this->autoRender = false;
        $this->layout = 'ajax';
        $id = $_GET['id'];          
        $this->loadModel('Teacher');
        $this->Teacher->delete($id);
        //$this->Session->setFlash('The post with id: '.$id.' has been deleted.');
        //$this->redirect(array('action'=>'index'));
    }

$('a.deleteajax')。单击(函数(事件){
event.preventDefault();
var answer=确认(“删除此记录?”)
若有(答复){
$.ajax({
url:“/Teachers/TeachersController/delete/”,
类型:'GET',
数据:$(this.attr(“href”)
});
}
返回false;
});

请帮帮我。。。我希望删除记录而不刷新页面。

将ajax更改为:添加
id
作为
数据中的键,以便在控制器中访问它。最好添加成功部分以确认操作消息

 <script type="text/javascript">
        $('a.deleteajax').click(function(event){
        event.preventDefault();
        var answer = confirm("Delete this record?")
        if (answer){
            $.ajax({
                url:'/Teachers/TeachersController/delete/',
                type:'GET',
                data: $(this).attr("href")
            });
        }
        return false;  
        });
    </script>

让我们一步一步地给你一个解决方案

首先在index.ctp中

您可以应用此代码

$.ajax({
             url:'/Teachers/TeachersController/delete/',
                type:'GET',
                data: {id:$(this).attr("href")},
                success:function(resp){//reso is msg string returned from controller.
                    alert(resp);
                  }

            });

这段代码应该可以正常工作。

您尝试进行的ajax调用在哪里。首先尝试编写一些东西,如果不起作用,那么只询问.sry。。。我在iindex.ctp中发布ajax代码时遇到问题,如下所示:-$('a.deleteajax')。单击(函数(事件){event.preventDefault();var answer=confirm(“删除此记录?”)如果(答案){$.ajax({url:'/Teachers/TeachersController/Delete/',type:'GET',data:$(this.attr(“href”);}返回false;); 这个ajax url对我来说真的很奇怪。。。如果控制器名称为
TeachersController
,则应为:
/teachers/delete
。但您确实应该首先查看文档,因为您在删除操作中做了一些非常奇怪的事情,比如使用
loadModel
将模型加载到控制器。阅读文档。@HarshalBorse您是否能够在php部件中获取id。但不会执行删除。ajax没有调用。我试着发出警报();以便检查但不工作。@HarshalBorse try
$this->Teacher->delete(5)不带loadModel。或者尝试以下原始查询:
$db=ConnectionManager::getDataSource('default')$db->rawQuery(“从id=$id的表中删除”)什么也没发生。。链接的工作方式类似于“#”。
$.ajax({
             url:'/Teachers/TeachersController/delete/',
                type:'GET',
                data: {id:$(this).attr("href")},
                success:function(resp){//reso is msg string returned from controller.
                    alert(resp);
                  }

            });
foreach( $teacher as $teachers )
{
          echo "<tr id='echo $teachers['Teacher']['id'];'>";  //used id for daynamic tr, for hide temporary your delete data.

          echo "<td>".$teachers['Teacher']['username']."</td>";
          echo "<td>".$teachers['Teacher']['dgen']."</td>";
          echo "<td>".$teachers['Teacher']['dqual']."</td>";                  
          echo $this->html->link('','#',
          array(
               'class'=>'del btn btn-sm btn-danger glyphicon glyphicon-remove',
               'id'=>$teachers['Teacher']['id']  //important 
          )); 

          echo "</tr>";
}
$('.del').click(function(){
                    var x=$(this).attr("id");
                    jQuery.get("<?php echo  Router::url(array('controller'=>'teachers','action'=>'delete'));?>",               {"id":x},
   function(data,stat){

                    jQuery('#'+x).remove();
     });
});
public function delete($id=NUll) {
    $id=$_GET['id'];     // it's not a good practices you can use $this->request->data/param I mean cakephp syntax.  
    $this->Teacher->id = $id;  
    if ($this->Teacher->delete()) {
        $this->Session->setFlash(__('The user has been deleted.'));
    }
    return $this->redirect(array('action' => 'index'));
}