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快速生成列表页面的相关代码

tablelist.js - ajax删除列表上的数据
 
 
tablelist.js - ajax删除列表上的数据
 
tablelist.js - ajax删除列表上的数据
 
tablelist.js - ajax删除列表上的数据