tablelist.js - ajax删除列表上的数据
tablelist.js对删除列表上的记录进行封装,通过调用remove函数配合后台php代码可以移除列表上的数据。
一、使用
1.页面引入tablelist.js,默认情况下,布局文件main.tpl已经引入。
2.页面初始化tablelist并使用:
删除按钮绑定业务ID:object_id
<a href="javascript:void(0);" object_id="{$object.attr_id}" class="del border-none">删除</a>
javascript绑定事件
<script type="text/javascript"> var tablelist; $().ready(function() { tablelist = $("#table_list").tablelist(); // 删除记录 $("body").on('click', '.del', function() { var id = $(this).attr("object_id"); tablelist.remove({ confirm: '您确定删除这条记录吗?', url: 'delete', data: { id: id } }); }); }); </script>
3.后台php编写对应的action,例如:
public function actionDelete () { $id = Filter::post('id', 0); try { AttributeDo::delete(0); return Result::json([ 'message' => '删除成功!' ]); } catch(\Exception $e) { return Result::exception($e)->toJson(); } }
或者:
/** * 删除 */ public function actionDelete () { $id = Filter::post('id', 0); $count = Brand::deleteAll([ 'brand_id' => $id ]); if($count == 1) { // 设置消息 return Result::success([ 'message' => lang('delete-brand-success') ])->toJson(); } else { // 设置消息 return Result::error([ 'message' => lang('delete-brand-fail') ])->toJson(); } }
二、代码说明:
tablelist.remove(options)的代码为:
// AJAX删除 function remove(options) { var settings = this; var defaults = { url: url, type: 'POST', data: { }, dataType: 'json', success: function(result) { if (result.code == 0) { var value = result.data; // 重新加载 settings.load(); // 如果有提示信息则显示 if (result.message && $.trim(result.message) != '') { if ($.isFunction($.msg)) { $.msg(result.message, { icon: 1 }); } else { alert(result.message); } } } else if (result.message) { // 显示错误消息 if ($.isFunction($.alert)) { $.alert(result.message, { icon: 2 }); } else { alert(result.message); } } // Ajax加载结束 is_ajax_loading = false; } }; options = $.extend(defaults, options); // POST提交需要获取CSRF if (options.type.toLowerCase() == 'post' && options.data['_csrf'] == undefined) { if ($("[name='_csrf']").size() > 0) { options.data['_csrf'] = $("[name='_csrf']:first").val(); } else { var name = $.getCsrfParam(); var value = $.getCsrfToken(); options.data[name] = value; } } var localurl = location.pathname.substring(0, location.pathname.lastIndexOf("/") + 1); var url = options.url; if (url && url.indexOf("./") == 0) { url = localurl + url.substring(1); } else if (url && url.indexOf("/") != 0) { url = localurl + url; } else if (url == undefined || url == null || $.trim(url) == '') { url = localurl + url; } var confirm = options.confirm; if (confirm == undefined) { // 防止频繁点击重复提交 if (is_ajax_loading) { return; } ajax(options); } else { if ($.isFunction($.confirm)) { $.confirm(confirm, { icon: 3 }, function(index) { ajax(options); }); } else if (confirm(confirm)) { ajax(options); } } }
二、参数说明:
tablelist.remove(options)中:
1.remove函数执行的是ajax调用,为了方便自定义,所以参数options为jquery中ajax所需要的参数,默认值如上面的代码可见。
2.一般仅需要三个参数:
url:指向删除的action,默认在当前页面的控制器内部,如果以“/”开头则指向网站根目录
data:后台删除数据需要的参数,类型同$.ajax参数的data,为对象类型
confirm:额外的参数,可以自定义删除前的询问提示,如果不为空则自动提示,为空则跳过。
type:表单的提交类型,默认值为“POST”
3.后台PHP传来的Result对象中,可以设置Result.data.icon设置前台显示图标,成功默认为“success”,失败默认为“error”;其他值包括(前台根据字符串来获取图标代码):
var icons = ['warning'=>0, 'success'=>1, 'error'=>2, 'info'=>0];
其他的参数请参考jquery.ajax的API
三、快速开发
1.可以通过nii快速生成列表页面的相关代码