1. 程式人生 > >datatables+json+ajax以json輸出和刪除

datatables+json+ajax以json輸出和刪除

直接上乾貨:

首先:引入datatables.js和jquery.js和bootstrap.jsp等一些檔案:

如:

<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="datatables-plugins/dataTables.bootstrap.css" rel="stylesheet">
<link href="datatables-responsive/dataTables.responsive.css" rel="stylesheet">
<script src="vendor/jquery/jquery.min.js"></script>
<script src="datatables/js/jquery.dataTables.min.js"></script>
<script src="datatables-plugins/dataTables.bootstrap.min.js"></script>
<script src="datatables-responsive/dataTables.responsive.js"></script>


1.html

<div class="row">
	<div class="col-lg-12">
		<div class="panel panel-default">
			<div class="panel-body">
				<table class="table table-bordered" id="ht-dataTables">				
		<thead>
            <tr>
           		<th>id</th>
                <th>aaa</th>
                <th>bbb</th>
                <th>ccc</th>
                <th>ddd</th>
                <th>eee</th>
            </tr>
        </thead>
				</table>
				<!-- /.table-responsive -->
			</div>
			<!-- /.panel-body -->
		</div>
		<!-- /.panel -->
	</div>
	<!-- /.col-lg-12 -->
</div>
2.javascript
<script type="text/javascript">
 $(function () {
 //提示資訊
 var lang = {
 "sProcessing": "處理中...",
 "sLengthMenu": "每頁 _MENU_ 項",
 "sZeroRecords": "沒有匹配結果",
 "sInfo": "當前顯示第 _START_ 至 _END_ 項,共 _TOTAL_ 項。",
 "sInfoEmpty": "當前顯示第 0 至 0 項,共 0 項",
 "sInfoFiltered": "(由 _MAX_ 項結果過濾)",
 "sInfoPostFix": "",
 "sSearch": "搜尋:",
 "sUrl": "",
 "sEmptyTable": "表中資料為空",
 "sLoadingRecords": "載入中...",
 "sInfoThousands": ",",
 "oPaginate": {
 "sFirst": "首頁",
 "sPrevious": "上頁",
 "sNext": "下頁",
 "sLast": "末頁",
 "sJump": "跳轉"
 },
 "oAria": {
 "sSortAscending": ": 以升序排列此列",
 "sSortDescending": ": 以降序排列此列"
 }
 };
 
 //初始化表格
 var table = $("#ht-dataTables").dataTable({
 language:lang, //提示資訊
 autoWidth: false, //禁用自動調整列寬
 stripeClasses: ["odd", "even"], //為奇偶行加上樣式,相容不支援CSS偽類的場合
 processing: true, //隱藏載入提示,自行處理
 serverSide: true, //啟用伺服器端分頁
 searching: false, //禁用原生搜尋
 orderMulti: false, //啟用多列排序
 order: [], //取消預設排序查詢,否則複選框一列會出現小箭頭
 renderer: "bootstrap", //渲染樣式:Bootstrap和jquery-ui
 pagingType: "simple_numbers", //分頁樣式:simple,simple_numbers,full,full_numbers
 columnDefs: [{
 "targets": 'nosort', //列的樣式名
 "orderable": false //包含上樣式名‘nosort'的禁止排序
 }],
 ajax: function (data, callback, settings) {
 //封裝請求引數
 var param = {};
 param.limit =data.length;//頁面顯示記錄條數,在頁面顯示每頁顯示多少項的時候
 param.start = data.start;//開始的記錄序號
 param.page = (data.start / data.length)+1;//當前頁碼
 //ajax請求資料
 $.ajax({
  type: "GET",
  url: "tradeRecord_query",
  cache: false, //禁用快取
  data: param, //傳入組裝的引數
  dataType: "json",
  success: function (result) {
  //封裝返回資料
  var returnData = {};
  returnData.draw = data.draw;//這裡直接自行返回了draw計數器,應該由後臺返回
  returnData.recordsTotal = result.recordsTotal;//返回資料全部記錄
  returnData.recordsFiltered = result.recordsFiltered;//後臺不實現過濾功能,每次查詢均視作全部結果
  returnData.data = result.data;//返回的資料列表
  //console.log(returnData);
  //呼叫DataTables提供的callback方法,代表資料已封裝完成並傳回DataTables進行渲染
  //此時的資料需確保正確無誤,異常判斷應在執行此回撥前自行處理完畢
  callback(returnData);
  }
 });
 },
 //列表表頭欄位
 columns: [
	 { "data": "id" ,"orderable":false},
	 { "data": "transType" },
     { "data": "description" },
     { "data": "engDisplay" },
     { "data": "chinDisplay" },
     {
          "data": null, 
          "className": "center",
          "defaultContent": '<button type="button" id="editrow" data-toggle="modal" class="btn btn-outline btn-circle btn-sm purple"><i class="fa fa-edit"></i></button>  <button id="delrow" class="btn btn-outline btn-circle dark btn-sm black"><i class="fa fa-trash-o"></i></button>'
      }
 ]
 }).api();
 //此處需呼叫api()方法,否則返回的是JQuery物件而不是DataTables的API物件
 });
 
 //表資料刪除
 $('#ht-dataTables').on( 'click','button#delrow',function (even) {
      even.preventDefault;//方法阻止元素髮生預設的行為(例如,當點選提交按鈕時阻止對錶單的提交)。
      if(confirm("確定刪除該資訊?") == false){
         return;
      }else{
    	  /* 得到當前物件的值 */
         var data = $("#ht-dataTables").DataTable().row( $(this).parents('tr') ).data();
         $.ajax({
             url: 'tradeRecord_delete',
             type: 'POST',
             dataType: 'json',
             data: {"id":data.id},
 /* success是指後臺資料庫的表麼?如果是,先將success表中相關的資料封裝在list裡面,然後將list轉為json資料格式的字串返回到前臺。如果你用的是jQuery的ajax方法,那麼記得在前臺接受的時候一定要指定資料接受格式為json,否則你得到是一個json的字串,不是一個json的物件 */
          success: function(data){
        	  alert(data.success);
                if (data.success =="success" ){
                     alert('刪除成功!');
                     start = $("#ht-dataTables").dataTable().fnSettings()._iDisplayStart;//從第幾行開始顯示資料
                     total = $("#ht-dataTables").dataTable().fnSettings().fnRecordsDisplay();//
                     alert(start);
                     alert(total);
                     window.location.reload();
                     if((total-start) == 1){
                         if (start > 0) {
                             $("#ht-dataTables").dataTable().fnPageChange( 'previous', true);//已回到上一頁中 
/* 注意$("#sorting-advanced").dataTable().fnPageChange( ‘previous‘); 是不行的,必需進行重新整理,否則頁面中顯示的iDisplayStart會從cookie中取得,還是刪除前的iDisplayStart */
                         }
                     }
                }
             },
             error:function(data){
            	 	alert(data.success);
               		console.log(data);
                 	alert('伺服器無響應,請聯絡管理員!');
             }
         })
     }
  });
 
</script>

3.controller

@Override
@RequestMapping(value="tradeRecord_query",method=RequestMethod.GET)//list
@ResponseBody
public String beanList(int limit,int start,int page,HttpSession httpSession, Model m) {
	System.out.println(limit+"--->"+start+"--->"+page);
	@SuppressWarnings("unchecked")
	List<TransactionTypeBean> list = (List<TransactionTypeBean>) this.service.find("beanList", "TransactionTypeBean", null);
	System.out.println(start+"--->"+(start+limit)+"--->"+list.size());
	System.out.println(list.get(0).getId()+"-------->");
	List<TransactionTypeBean> pageList=null;
	HashMap<String,Object> map = new HashMap<String,Object>();
	if(list.size()<start+limit){
		pageList=list.subList(start, list.size());
	}else{
	        pageList=list.subList(start, (start+limit));
	}
	        System.out.println(pageList.size()+"------->");
		
		map.put("recordsTotal", list.size());
		map.put("recordsFiltered", list.size());
		map.put("data", pageList);	
		String s = this.jsonUtil.toJson(map);
		return s;
	}
@Override
@ResponseBody
@RequestMapping(value="tradeRecord_delete",method=RequestMethod.POST)//delete
public String beanDelete(TransactionTypeBean bean, HttpSession httpSession, Model m) throws Exception {
	System.out.println(bean.getId()+"----------->");
	HashMap<String,Object> map = new HashMap<String,Object>();
	map.put("success", "success");
	try {
		service.delete(bean);
	} catch (Exception e) {
		e.printStackTrace();
	}
		String data = this.jsonUtil.toJson(map);
		return data;
	}



有什麼疑問,和建議大家可以留言討論。

相關推薦

datatables+json+ajaxjson輸出刪除

直接上乾貨: 首先:引入datatables.js和jquery.js和bootstrap.jsp等一些檔案: 如: <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"> <lin

java痛苦學習之路[十二]JSON+ajax+Servlet JSON資料轉換傳遞

1、首先客戶端需要引入 jquery-1.11.1.js 2、其次javaweb工程裡面需要引入jar包  [commons-beanutils-1.8.0.jar、commons-collections-3.1.jar、commons-lang-2.4.jar、commo

web前端之Ajax遍歷json後對每一條資料進行相應的修改刪除

web前端之ajax遍歷json後對每一條資料進行相應的修改和刪除 function serviceUser(){ $('.ergodicPersonList').remove(); $.ajax({ url: "/b

通過在jquery中添加函數發送ajax請求來加載數據庫數據,json的格式發送到頁面

this -1 結果集 ont js插件 顯示 可用 cti pat 通過在jquery中添加函數發送ajax請求來加載數據庫數據,以json的格式發送到頁面 從數據庫中查詢倉庫信息,顯示在下拉菜單中: 首先,引入js插件,這裏使用jquery-1.8.3.js &

JSPHP之間JSON格式傳輸

ray nbsp 單例 補充 接收 文本 語言 ext tex Json是一種的輕量級文本數據交換格式。它獨立於編程語言,可以用於在不用的編程語言之間進行數據的交互。 下面簡單例舉二個使用JSON進行數據通信的例子。 第一個例子: //Javascript以ajax發送數

Servlet如何獲取ajaxjson格式傳入的資料

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

類的方法json格式輸出

1.新增model層,在model層建立User類 包名:com.huinongtx.demospringboot.model 類名:User 類內容: package com.huinongtx.demospringboot.model; /** * Created by de

python利用psutil模組獲取計算機系統資源並json格式輸出

python3.6,windows下測試 一: 需要安裝psutil模組     easy_install.exe psutil 或者用下載psutil安裝包用pip install psutil命令安裝     psutil模組的資訊可參考: &nb

Android JSON格式儲存載入本地檔案

本章主要講把一個物件以json格式儲存在沙盒中,然後又從沙盒中將json資料讀取出來。 每個應用的沙盒目錄都是裝置/data/data目錄的子目錄,且預設以應用包命名。例如,CriminalIntent應用的沙盒目錄全路徑為:/data/data/com.bi

java後臺json字串的形式,將資料返回給$.ajax的問題總結

再利用$.ajax時,向後臺傳送資料,後臺拼接成字串的json返回給前臺頁面接收不到相應的值 後臺程式碼如下: @RequestMapping("/getPhonesById")     public void getPhonesById(HttpServletReques

ajax query,後臺Jsp頁面,使用json互動

加粗樣式 public void checkAccount(HttpServletRequest request,HttpServletResponse response) throws IOException { String account = request.get

json動態新增屬性刪除屬性

轉自:https://blog.csdn.net/qq_36922927/article/details/78927394 1  新增屬性:   var myObject={"name":"張三”} 如何新增屬性age,得到下面的效果呢?  &

Django & JavaScript 用Ajax實現JSON數據的請求響應

UNC else admin ros cat nbsp ejs -c var 【描述】 1.Server端定義了兩個字段:Article.title 和 Article.content 2.客戶端用JavaScript Ajax異步加載請求服務器的JSON數據 效果是點擊按

js 獲取excel檔案並json形式輸出

<!DOCTYPE html> <html>     <head>         <meta charset="UTF-8">         <title></title>         <

golang: 把sql結果集json格式輸出

程式碼出處:http://stackoverflow.com/questions/19991541/dumping-mysql-tables-to-json-with-golang func getJSON(sqlString string) (string, error)

ajax獲取後臺資料,頁面Json資料按照json格式化輸出

樣式效果圖: 2.頁面程式碼: //查詢出對應的原始碼進行展示 function querySource(label) { var url = base_path+"console/cfg/querySource"; $.ajax({ url:

jquery拼接ajaxjson字串拼接

jquery拼接字串ajax <form id="myForm" action="#"> <input name="name"/> <input name="age"/> <input ty

Servlet如何獲取ajaxjson格式傳入的資料?

$('#but_json_json').click(function(){             var j ={"name":"王","password":123456};                        $.ajax(                  

Ajax傳輸Jsonxml資料

ajax傳輸xml資料:只要把資料封裝成xml格式就可以實現傳輸,前臺js用responseXML接收xml引數,後臺讀取用流和dom4j來解析 前臺頁面 <%@ page language="java" import="java.util.*"

go語言中beego框架資料輸出返回json詳解

beego框架中資料輸出 1.直接輸出字串 beego.Controller.Ctx.WriteString(“字串”) func (ctx *Context) WriteString(content string) { ctx.ResponseWrit