BootstrapTable自定义ajax方法

bootstrapTable可以自定义ajax方法,通过ajax请求获得数据返回展示在bootstrapTable表格中,这种方式我自认为比较简单常用。本篇还加了简单增删改操作,获得表格选中的数据,以及按钮可用与否。这些比较常用。

index.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>bootstrap-table-demo</title>
		<!-- 引入bootstrap样式 -->
		<link rel="stylesheet" href="css/bootstrap.min.css" />
		<!-- 引入bootstrap-table样式 -->
		<link rel="stylesheet" href="css/plugins/bootstrap-table/bootstrap-table.min.css" />
		<!-- layer -->
		<link rel="stylesheet" href="js/plugins/layer/skin/layer.css" />
		<style type="text/css">
			.form-inline .form-group input[type=text], .form-inline .form-group select{
				width:120px;
			}
		</style>
	</head>
	<body style="width: 90%;margin: 0 auto;">
	
	<h2>bootstrap-table</h2>

	<form id="form1" action="" method="get" class="form-inline">
		<div class="form-group">
			<label class="control-label ">ID:</label>
			<input type="text" id="id" class="form-control" name="id" />
		</div>
		<div class="form-group">
			<label class="control-label ">Name:</label>
			<input type="text" id="name" class="form-control" name="name" />
		</div>
		<div class="form-group">
			<label class="control-label ">Price:</label>
			<!--<input type="text" id="price" class="form-control" name="price" />-->
			<select class="form-control" id="price" name="price">
				<option value="0">请选择</option>
				<option value="1">$1</option>
				<option value="2">$2</option>
				<option value="3">$3</option>
				<option value="4">$4</option>
			</select>
		</div>
		<input type="submit" class="btn btn-primary" value="搜索"/>
	</form>
	<br/>
	<div id="toolbar" class="btn-group">
		<button class="btn btn-success" id="add">新增</button>
		<button class="btn btn-warning" id="edit">编辑</button>
		<button class="btn btn-info" id="look">查看</button>
		<button class="btn btn-danger" id="delete">删除</button>
		<button class="btn btn-primary" id="refresh">刷新</button>
	</div>	
	
	<!--bootstrap-table表格-->
	<table id="table" 
		data-toolbar="#toolbar"
		data-toggle="table"  
		data-ajax="ajaxRequest"   
		data-search="false"     
		data-side-pagination="server" 
		data-pagination="true" 
		data-click-to-select="true" 
		data-single-select="true"
		data-page-size= "10"
		>
		<thead style="background:#efefef;">
			<tr>
				<th data-checkbox="true"></th>
				<th data-field="id">ID</th>
				<th data-field="name">Name</th>
				<th data-field="price">Price</th>
			</tr>
		</thead>
	</table>

	
	<!-- jquery -->
	<script type="text/javascript" src="js/jquery.min.js" ></script>
	<!-- bootstrap -->
	<script type="text/javascript" src="js/bootstrap.min.js" ></script>
	<!-- bootstrap-table -->
	<script type="text/javascript" src="js/plugins/bootstrap-table/bootstrap-table.min.js" ></script>
	<!-- 引入中文语言包 -->
	<script type="text/javascript" src="js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js" ></script>
	<!-- layer -->
	<script type="text/javascript" src="js/plugins/layer/layer.min.js" ></script>
	<script type="text/javascript">

		//自定义ajax方法
		function ajaxRequest(params){
			//debugger;
			$.ajax({
				url: "/bootstrap-table/data4.json",
				type: "POST",
				dataType: "json",
				success: function(rs){
					console.log(rs)
					var message = rs.array;
					
                      params.success({ //注意,必须返回参数 params
			            total: rs.total,
			            rows: message
			        });

					//debugger;
				},
				error: function(rs){
					console.log(rs)
				}
			});
		}
		
		var $table = $("#table"),
			$add = $("#add"),
			$edit = $("#edit"),
			$look = $("#look"),
			$delete = $("#delete"),
			$refresh = $("#refresh");
		//按钮可用与否
		$edit.prop('disabled', true);
		$look.prop('disabled', true);
		$delete.prop('disabled', true);
		$table.on('check.bs.table uncheck.bs.table ' +
			'check-all.bs.table uncheck-all.bs.table',
			function() {
				var bool = !($table.bootstrapTable('getSelections').length && $table.bootstrapTable('getSelections').length == 1);
				$edit.prop('disabled', bool);
				$look.prop('disabled', bool);
				$delete.prop('disabled', bool);
		});
		
		/**
		 * 获得选中的数据,为一个对象数组
		 */
		function getSelections() {
			return $.map($table.bootstrapTable('getSelections'), function(row) {
				return row; 
			});
		}
		//刷新
		$refresh.on('click', function(){
			$table.bootstrapTable('refresh');
		});
		//添加
		$add.on('click', function(){
			layer.open({
			type: 2,
			title: '添加商品',
			shadeClose: false,
			shade: 0.8,
			area: ['50%', '60%'],
			content: 'add.html'
			});
		});	
		//查看
		$look.on('click', function(){
			var row = getSelections()[0]; 
			var id = row.id; 
			var name = row.name;
			var price = row.price; //debugger;

			layer.open({
			type: 2,
			title: '查看商品',
			shadeClose: false,
			shade: 0.8,
			area: ['50%', '60%'],
			content: 'edit.html?id=' + id + '&name=' + name + '&price='+ price +'&type=look'
			});
		});
		//编辑
		$edit.on('click', function(){
			var row = getSelections()[0]; 
			var id = row.id; 
			var name = row.name;
			var price = row.price;
			
			layer.open({
			type: 2,
			title: '编辑商品',
			shadeClose: false,
			shade: 0.8,
			area: ['50%', '60%'],
			content: 'edit.html?id=' + id + '&name=' + name + '&price='+ price ,
			end: function () { //最后执行reload
                location.reload();
            	}
			});
		});
		//删除
		$delete.on('click', function(){
			var ids = getSelections();
			layer.confirm('您是否要删除当前 ' + ids.length + '条数据?', {
			btn: ['是', '否']
			}, function() {
				delServer(ids);
			});
		});
		//删除
		function delServer(ids){
			layer.msg('删除成功');
		}
	</script>
	
	</body>
</html>

data4.json

{
"code": 0,
"total": 1314,
"message": "success",
"array" :
[
{
"id": 0,
"name": "Item 0",
"price": "$1"
},
{
"id": 1,
"name": "Item 1",
"price": "$1"
},
{
"id": 2,
"name": "Item 2",
"price": "$2"
},
{
"id": 3,
"name": "Item 3",
"price": "$3"
},
{
"id": 4,
"name": "Item 4",
"price": "$1"
},
{
"id": 5,
"name": "Item 5",
"price": "$1"
},
{
"id": 6,
"name": "Item 6",
"price": "$1"
},
{
"id": 7,
"name": "Item 7",
"price": "$1"
},
{
"id": 8,
"name": "Item 8",
"price": "$1"
},
{
"id": 9,
"name": "Item 9",
"price": "$1"
}
]
}

edit.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>编辑</title>
		<!-- 引入bootstrap样式 -->
		<link rel="stylesheet" href="css/bootstrap.min.css" />
		<!-- 引入bootstrap-table样式 -->
		<link rel="stylesheet" href="css/plugins/bootstrap-table/bootstrap-table.min.css" />
		<!-- layer -->
		<link rel="stylesheet" href="js/plugins/layer/skin/layer.css" />
		<style type="text/css">
			.form-group{
				width:90%;
				margin: 15px auto;
			}
		</style>
	</head>
	<body>
	
	<div>
		<form id="form1" action="" method="get" class="">
		<div class="form-group">
			<label class="control-label ">ID:</label>
			<input type="text" id="id" class="form-control" name="id" />
		</div>
		<div class="form-group">
			<label class="control-label ">Name:</label>
			<input type="text" id="name" class="form-control" name="name" />
		</div>
		<div class="form-group">
			<label class="control-label ">Price:</label>
			<!--<input type="text" id="price" class="form-control" name="price" />-->
			<select class="form-control" id="price" name="price">
				<option value="$0">请选择</option>
				<option value="$1">$1</option>
				<option value="$2">$2</option>
				<option value="$3">$3</option>
				<option value="$4">$4</option>
			</select>
		</div>
		<div class="form-group">
			<input type="button" id="submit" class="btn btn-primary" style="width: 25%;" value="修改"/>
			<input type="button" id="close" class="btn btn-danger" style="width: 25%;" value="关闭"/>
		</div>
		
	</form>
	</div>	
	
	<!-- jquery -->
	<script type="text/javascript" src="js/jquery.min.js" ></script>
	<script type="text/javascript" src="js/jquery-1.11.3.min.js" ></script>
	<!-- layer -->
	<script type="text/javascript" src="js/plugins/layer/layer.min.js" ></script>
	
	<script type="text/javascript">
	//给jq扩展方法
	(function ($) {
        $.getUrlParam = function (name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if (r != null) return unescape(r[2]); return null;
        }
     })(jQuery);
	//alert($.getUrlParam('id'));
	
	var index = parent.layer.getFrameIndex(window.name);
	$("#close").on('click', function(){	
		parent.layer.close(index);
	});
	//
	var typelook = $.getUrlParam("type");

	//初始化数据
	initData();
	if(typelook){
		$("#submit").hide();
		$("input").attr('disabled',true);
		$("select").attr('disabled',true);
		$('#close').attr('disabled', false);
	}
	function initData(){
		var id = $.getUrlParam('id');
		var name = $.getUrlParam('name');
		var price = $.getUrlParam('price');
		$('#id').val(id);
		$('#name').val(name);
		$('#price').val(price);
	}

	$("#submit").click(function(){
		layer.msg("修改成功");
		setTimeout(function (){
			parent.layer.close(index);
		}, 1000);
	});
	</script>
	</body>
</html>

 

 

  • 12
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Bootstrap Table是一款基于Bootstrap框架的强大的表格插件,它可以快速搭建精美的数据表格,并支持通过Ajax进行分页加载数据。 使用Bootstrap Table进行Ajax分页,需要在表格初始化时设置相关参数和方法。首先,在HTML中创建一个容器来存放表格,如下所示: ```html <div id="tableContainer"></div> ``` 然后,在JavaScript中进行表格的初始化,同时设置Ajax分页的相关参数和方法,如下所示: ```javascript $(function() { $('#tableContainer').bootstrapTable({ method: 'get', // 通过GET方式获取数据 url: 'your_ajax_url', // 设置读取数据的URL地址 pagination: true, // 开启分页 sidePagination: 'server', // 分页方式为服务器端分页 queryParamsType: '', // 参数类型为默认的'limit'和'offset' queryParams: function(params) { // 自定义请求参数 params.customParam1 = 'value1'; params.customParam2 = 'value2'; return params; }, responseHandler: function(res) { // 自定义数据处理函数 return res.data; // 返回服务器端返回的数据 }, onLoadSuccess: function(data) { // 加载成功后的回调函数 // TODO: 处理加载成功后的操作 }, onLoadError: function(status) { // 加载失败后的回调函数 // TODO: 处理加载失败后的操作 } }); }); ``` 以上代码中,`method`参数设置为'get'表示使用GET方式获取数据,`url`参数设置为ajax请求的URL地址,`pagination`参数设置为true表示开启分页,`sidePagination`参数设置为'server'表示服务器端分页,`queryParamsType`参数设置为空表示请求参数为默认的'limit'和'offset'。 `queryParams`参数可以自定义请求参数,其中`params`是向服务器端发送的参数对象,可以添加自定义的参数。 `responseHandler`参数可用于自定义数据处理函数,将服务器端返回的数据进行处理后返回给Bootstrap Table。 `onLoadSuccess`参数和`onLoadError`参数分别是加载成功和失败后的回调函数,可以在加载完成后进行相应的操作。 通过以上设置,就可以实现使用Bootstrap Table进行Ajax分页加载数据的功能。当用户进行分页操作时,插件会自动发送Ajax请求获取对应页码的数据并更新到表格中,从而实现了Ajax分页的效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值