我正在使用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
}
}
});
});
});
答案 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'