如何在cakephp中用jquery删除记录?

时间:2014-09-20 07:22:27

标签: jquery cakephp

我正在使用cakephp.jtries中的jquery删除记录以下代码,但它没有给我实际输出。当我刷新页面时删除记录。当我点击删除链接时它会给我一个弹出消息。失败删除记录。

https://gist.github.com/taleeb35/e61f58af9944511b1669

这是我的要点。

public function delete($id = null) {
  if($this->request->is('ajax')) {
    //$this->autoRender = false;
    if ($this->User->delete($id)) {
      $response = $this->Session->setFlash(__('User deleted'));
      $response .= $this->redirect(array('action' => 'index'));
    } else {
      $response = $this->Session->setFlash(__('User was not deleted'));
      $response.=  $this->redirect(array('action' => 'index'));
    }
    return json_encode($response);
  }  
}


$(document).ready(function() {
    $('a.delete').click(function(e) {
        var __this = this;
        e.preventDefault();
        var parent = $(this).parent("td").parent("tr");
        $.ajax({
            type: 'get',
            url: $(__this).attr("href"),
            beforeSend: function() {
                parent.animate({'backgroundColor':'#fb6c6c'},3000);
            },
            success: function(response) {
                if(response.success){
                    parent.slideUp(300,function() {
                        parent.remove();
                    });
                }else{
                    alert("Failed to delete message");
                    parent.animate({'backgroundColor':'#fff'},1000);//Restore your background back
                }
            }
        });
    });
});

1 个答案:

答案 0 :(得分:0)

你必须在行动中做几件事。首先,取消注释与autorender。此操作仅为ajax,因此您无需渲染任何内容,甚至无需查看文件。第二件事是布局,应该设置为null或者ajax-friendly。最后一件事是回应和回归他们的方式。你可以使用die()的{​​{1}} insetad,如果你的响应将是包含js脚本中所需的所有信息的数组,那将会更好。所以你的行动可能如下:

return

要做的第二件事是添加通过ajax调用返回的数据类型。您还可以在public function delete($id = null) { if ($this->request->is('ajax')) { $this->autoRender = false; $this->layout = null; $response = array(); if ($this->User->delete($id)) { $response['success'] = false; $response['message'] = __('User deleted'); $response['redirect'] = Router::url(array('action' => 'index')); } else { $response['success'] = true; $response['message'] = __('User was not deleted'); $response['redirect'] = Router::url(array('action' => 'index')); } echo json_encode($response); } die(); } 回调中解析响应。

success

或(成功回调)

dataType: 'json'