springmvc + jquery datatable + ajax实现动态分页查询

网上关于jquery datatable的例子很多,但结合springmvc的例子很少,搞了2天才把这个弄明白,现在记录下来,作为学习笔记。

1.导入所需文件

(1) jquery.dataTables.css

(2) jquery.js

(3) jquery.dataTables.js

2.datatable.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="css/jquery.dataTables.css"/>
<title>listView</title>

</head>
<body>
	<table id="tb" class="display" >
		<thead>
			<tr>
				<th>col1</th>
				<th>col2</th>
			</tr>
		</thead>
		<tbody>
		</tbody>
	</table>

	<script type="text/javascript" src="js/jquery.js"></script>
	<script type="text/javascript" src="js/jquery.dataTables.js"></script>

	<script type="text/javascript">
		$(document).ready(function() {
			$("#tb").dataTable({
				"bProcessing": false, // 是否显示取数据时的那个等待提示
			    "bServerSide": true,//这个用来指明是通过服务端来取数据
	            "sAjaxSource": "tableDemoAjax.html",//这个是请求的地址
	            "fnServerData": retrieveData // 获取数据的处理函数
			});
		});

		// 3个参数的名字可以随便命名,但必须是3个参数,少一个都不行
		function retrieveData( sSource111,aoData111, fnCallback111) {
			$.ajax({
				url : sSource111,//这个就是请求地址对应sAjaxSource
				data : {"aoData":JSON.stringify(aoData111)},//这个是把datatable的一些基本数据传给后台,比如起始位置,每页显示的行数
				type : 'post',
				dataType : 'json',
				async : false,
				success : function(result) {
					fnCallback111(result);//把返回的数据传给这个方法就可以了,datatable会自动绑定数据的
				},
				error : function(msg) {
				}
			});
		}
	</script>

</body>
</html>

3.后台请求地址tableDemoAjax

	@RequestMapping("tableDemoAjax")
	@ResponseBody
	public String tableDemoAjax(@RequestParam String aoData) {

		JSONArray jsonarray = JSONArray.fromObject(aoData);

		String sEcho = null;
		int iDisplayStart = 0; // 起始索引
		int iDisplayLength = 0; // 每页显示的行数

		for (int i = 0; i < jsonarray.size(); i++) {
			JSONObject obj = (JSONObject) jsonarray.get(i);
			if (obj.get("name").equals("sEcho"))
				sEcho = obj.get("value").toString();

			if (obj.get("name").equals("iDisplayStart"))
				iDisplayStart = obj.getInt("value");

			if (obj.get("name").equals("iDisplayLength"))
				iDisplayLength = obj.getInt("value");
		}

		// 生成20条测试数据
		List<String[]> lst = new ArrayList<String[]>();
		for (int i = 0; i < 20; i++) {
			String[] d = { "co1_data" + i, "col2_data" + i };
			lst.add(d);
		}

		JSONObject getObj = new JSONObject();
		getObj.put("sEcho", sEcho);// 不知道这个值有什么用,有知道的请告知一下
		getObj.put("iTotalRecords", lst.size());//实际的行数
		getObj.put("iTotalDisplayRecords", lst.size());//显示的行数,这个要和上面写的一样

		getObj.put("aaData", lst.subList(iDisplayStart,iDisplayStart + iDisplayLength));//要以JSON格式返回
		return getObj.toString();
	}

4.效果图

时间: 2024-10-07 01:09:15

springmvc + jquery datatable + ajax实现动态分页查询的相关文章

datatable表格框架服务器端分页查询设置

js代码如下: $('#mytable').dataTable( { "bServerSide": true, //开启服务器模式,使用服务器端处理配置datatable.注意:sAjaxSource参数也必须被给予为了给datatable源代码来获取所需的数据对于每个画. 这个翻译有点别扭.开启此模式后,你对datatables的每个操作 每页显示多少条记录.下一页.上一页.排序(表头).搜索,这些都会传给服务器相应的值. "sAjaxSource": "

c# Ajax后台动态分页

创建WebPager类 public static class WebPager { public static string WebPagerAjax(string Idn, bool IsShort) { string html = @" <style type=""text/css"">.pgE{color:#FF9A2A;cursor:pointer;}.pgD{color:gray;}</style> <script

jquery autocomplete ajax获取动态数据,兼容各浏览器,支持中文

jquery.autocomplete.js经过改动,支持各种浏览器.支持中文输入! 1.效果图例如以下 2.HTML和ajax代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html

jquery datatable ajax 获取数据/重新加载

table <table class="table table-striped table-bordered table-hover " style="width: 100%;" id="table1"> <thead> <tr> <th>名</th> <th>类型</th> <th>是否为空</th> <th>默认值</

jQuery的ajax中return语句无法返回值

今天在做一个新需求的时候,用到jQuery的ajax来返回一个查询结果: 但是调用这个方法的时候,data有数据,调用的地方获取到的却一直都是undefined,在网上搜索了一些资料,找到了问题所在,解决方法如下: 1:属性中需要增加async:false; 2:在ajax之前声明一个变量,在success中,将data赋值给这个变量,并在ajax之后,return这个变量; 因为如果是异步执行的话,也许查询结果还没有返回来,js这边就把data返回回去了,但是只添加async:false属性却

Springmvc+Myabtis+Ajax实现异步分页emp+dept(全部查询及模糊查询)

1.在项目中创建如下目录 2.创建实体类Dept package com.entity; import java.io.Serializable; /** * 部门表 * @author Administrator * */ public class Dept implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private Integer deptno; private Stri

PHP中使用jQuery+Ajax实现分页查询多功能操作

1.首先做主页面Ajax_pag.php 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ajax做分页</title> <script src="bootstrap/js/jquery-1.11.2.min.js"></script> <script src="Ajax_

DataTable ajax分页+删除

这个框架前前后后跳进了很多次坑,也算是本人比较愚笨吧做了很长的时间而积累的经验... $(document).ready(function() { $("#sample").DataTable({ // Internationalisation. For more info refer to http://datatables.net/manual/i18n language: { "aria": { "sortAscending": "

基于jquery的ajax分页插件(demo+源码)

前几天打开自己的博客园主页,无意间发现自己的园龄竟然有4年之久了.可是看自己的博客列表却是空空如也,其实之前也有写过,但是一直没发布(然而好像并没有什么卵用).刚开始学习编程时就接触到博客园,且在博客园学习了很多的知识,看过很多人的分享.说来也惭愧,自己没能为园友们分享自己的所学所得(毕竟水平比较差). 过去的一年也是辗转了几个城市换了几份工作(注定本命年不太平?).八月份来到现在所在的公司(OTA行业),公司是做互联网的,所以可能大家的前端都屌屌的?之前一直从事.NET开发(现在在这边也是),