ajax增删改查

ajax

  1. $.ajax() 万能用法
function doajax(	){
	$.ajax({
		"url":"dofingAl",
		"type":"GET:,
		"dataType":"Json".
		"success":function(result){
			console.log("ajax",result)
		}	
	})
}
  1. $.get() 负责查询
function doGet(	){
	var url = "dofindAll";
	var params = "";
	$.get(url,params,function(result){
		console.log("Get",result)
	}
}

3.$.post() 表单数据提交

function doPost(	){
	var url = "dofindAll";
	var params = "";
	$.Post(url,params,function(result){
		console.log("Post",result)
	}
}

4.$.getJSON() 查询获取json数据

function doPost(	){
	var url = "dofindAll";
	var params = "";
	$.getJSON(url,params,function(result){
		console.log("getJSON",result)
	}
}

JS 问题如何解决? console.log(),debugger,排除

<div class="row">
	<div class="col-xs-12">
		<div class="box">
			<div class="box-header">
				<h3 class="box-title">日志管理</h3>
				<div class="box-tools">
					<div class="input-group input-group-sm" style="width: 350px;">
						<input type="text" name="table_search" id="searchNameId"
							class="form-control pull-right" placeholder="用户名">

						<div class="input-group-btn">
							<button type="button" class="btn btn-default btn-search">
                                <i class="fa fa-search"></i>
							</button>
							<button type="button" class="btn btn-default btn-delete">删除</button>
						</div>
					</div>
				</div>
			</div>
			<!-- /.box-header -->
			<div class="box-body table-responsive no-padding">
				<table class="table table-hover">
					<thead>
						<tr>
						    <th><input type="checkbox" id="checkAll">全选</th>
							<th>用户名</th>
							<th>操作</th>
							<th>请求方法</th>
							<th>请求参数</th>
							<th>IP</th>
							<th>执行时长</th>
						</tr>
					</thead>
					<tbody id="tbodyId" type="cgb" ccc="100">
					    <tr>
					       <td colspan="7">数据正在加载中...</td>
					    </tr>
					</tbody>
				</table>
			</div>
			<div id="pageId" class="box-footer clearfix" dm="100" 
			     th:include="common/page.html :: pageFragement">
			</div>
			<!-- /.box-body -->
		</div>
		<!-- /.box -->
	</div>
</div>

   $(function(){
	//$("#pageId").load("doPageUI",doGetObjects);
	  //debugger
	  doGetObjects(); 
	 
	  //事件注册
	  $(".input-group-btn")
	  .on("click",".btn-search",doQueryObjects)
	  .on("click",".btn-delete",doDeleteObjects)
	  //thread中checkbox对象(全选)事件注册
	  $("#checkAll").change(doChangeTBodyCheckBoxState);
	  //tbody中checkbox对象事件注册
	  $("#tbodyId")
	  .on("change","input:checkbox",doChangeTHeadCheckBoxState);
   })
   //处理tbody中checkbox对象的事件
   function doChangeTHeadCheckBoxState(){
	  //1.定义一个初始状态,默认值true.
	  var flag=true;
	  //2.获得所有tbody中的checkbox对象并与flag变量的初始状态进行逻辑与操作
	  $("#tbodyId input:checkbox")
	  .each(function(){
		  flag=flag&&$(this).prop("checked");
	  });
	  //3.修改thead中checkbox状态
	  $("#checkAll").prop("checked",flag);
   }
   //处理thead中checkbox对象的事件
   function doChangeTBodyCheckBoxState(){
	   //1.获得head中checkbox对象的状态
	   var flag=$(this).prop("checked");
	   //2.修改tbody中checkbox对象状态
	   $("#tbodyId input:checkbox").prop("checked",flag);
   }
   //获取选中的记录id
   function doGetCheckedIds(){
	   //1.定义数组
	   var idArray=[];
	   //2.迭代所有选中的checkbox对象,并获取value属性的值,然后存储到数组
	   $("#tbodyId input:checkbox:checked")
	   .each(function(){
		   idArray.push($(this).val());
	   });
	   //3.返回数组
	   return idArray;
   }
   //定义日志删除事件处理函数
   function doDeleteObjects(){
	   //1.获取选中记录id
	   var idArray=doGetCheckedIds();//通过此函数返回一个数组,数组中存储的是选中的记录id
	   if(idArray.length==0){
		   alert("请先选择");
		   return;
	   }
	   if(!confirm("确认删除吗"))return;
	   //2.并构建参数对象
	   var params={"ids":idArray.toString()};//[1,2,3]-->1,2,3
	   //3.定义删除操作的url
	   const url="log/doDeleteObjects";
	   //4.发送异步请求执行删除操作,并刷新页面
	   $.post(url,params,doHandleDeleteResult)
   }
   //处理删除结果
   function doHandleDeleteResult(result){
	   if(result.state==1){
		   alert(result.message);
		   //doGetObjects();//刷新
		   doRefreshAfterDeleteOK();
	   }else{
		   alert(result.message);
	   }
   }
   //执行删除操作以后的刷新操作
   function doRefreshAfterDeleteOK(){
	   var checkAll=$("#checkAll").prop("checked");
	   var pageCurrent=$("#pageId").data("pageCurrent");
	   var pageCount=$("#pageId").data("pageCount")
	   if(checkAll&&pageCurrent==pageCount&&pageCount>1){
		   pageCurrent--;
		   $("#pageId").data("pageCurrent",pageCurrent);
	   }
	   doGetObjects();
   }
   //基于参数查询日志信息
   function doQueryObjects(){
	   //初始化当前页码值
	   $("#pageId").data("pageCurrent",1);
	   //执行查询
       doGetObjects();
   }
   //通过此函数异步加载服务端的日志信息
   function doGetObjects(){
	 //初始化全选checkbox对象状态
	 $("#checkAll").prop("checked",false);
	 //1.定义请求参数
	 var pageCurrent=$("#pageId").data("pageCurrent");
	 if(!pageCurrent)pageCurrent=1;
	 var uname=$("#searchNameId").val();
	 //参数封装:方法1
	 //let params="pageCurrent="+pageCurrent;
	 //if(uname)params=params+"&username="+uname;
	 //参数封装:方法2
	 let params={"pageCurrent":pageCurrent};//json格式的js对象
	 if(uname)params.username=uname;
	 //2.定义请求url
	 const url="log/doFindPageObjects";
	 //3.发送异步请求并处理响应结果
	// $.getJSON(url,params,function(result){//JsonResult
	//	 doHandleQueryResult(result);
	 //});
	 //也可以按照如下结构进行异步请求
	 $.getJSON(url,params,doHandleQueryResult)
   }
   function doHandleQueryResult(result){//JsonResult
	   //debugger
	   //console.log("result",result);
	   if(result.state==1){//正常数据
		   //第一步:将当前页的日志记录信息更新到页面上
		   //console.log(result.data.records)
		   doSetTableBodyRows(result.data.records);
		   //第二步:将分页信息更新到页面上
		   doSetPagination(result.data);
	   }else{
		   //alert(result.message);
		   doSetQueryErrors(result.message);
	   }
   }
   function doSetQueryErrors(message){
	   $("#tbodyId").html(`<tr><td colspan='7'>${message}</td></tr>`);
   }
   
   function doSetTableBodyRows(records){//List<SysLog>
	   //1.获取tbody对象并清空内容
	   var tBody=$("#tbodyId");
	   tBody.empty();
	   //2.遍历records并将结果更新到页面上。
	  //for(var i=0;i<records.length;i++){
		   //1.构建一行tr对象
		   //var tr=doCreateRow(records[i]);
		   //2.将tr追加tbody中
		   //tBody.append(tr);
	  //}
	   records.forEach(record=>tBody.append(doCreateRow(record)))
   }
   function doCreateRow(record){
	   return `<tr>
	            <td><input type='checkbox' class='cItem' value=${record.id}></td>
	            <td>${record.username}</td>
	            <td>${record.operation}</td>
	            <td>${record.method}</td>
	            <td>${record.params}</td>
	            <td>${record.ip}</td>
	            <td>${record.time}</td>
	       </tr>`;
   }
</script>

分页

<div th:fragment="pageFragement">
  <ul class="pagination pagination-sm no-margin pull-right">
    <li><a class="first">首页</a></li>
	<li><a class="pre">上一页</a></li>
	<li><a class="next">下一页</a></li>
	<li><a class="last">尾页</a></li>
	<li><a class="rowCount">总记录数(0)</a></li>
	<li><a class="pageCount">总页数(0)</a></li>
	<li><a class="pageCurrent">当前页(1)</a></li>
  </ul>
  <script type="text/javascript">
      function doSetPagination(pageObject){
    	  //1.初始化总记录数
    	  $(".rowCount").html(`总记录数(${pageObject.rowCount})`);
    	  //2.初始化总页数
    	  $(".pageCount").html("总页数("+pageObject.pageCount+")");
    	  //3.初始化当前页
    	  $(".pageCurrent").html("当前页("+pageObject.pageCurrent+")");
    	  
    	  //4.存储当前页码值和总页数
    	  //data函数为jquery中的对象的数据绑定函数
    	  //data函数语法结构data(key[,value]);
    	  $("#pageId").data("pageCurrent",pageObject.pageCurrent);
    	  $("#pageId").data("pageCount",pageObject.pageCount);
      }
      $(function(){
    	  //事件注册
    	  //当点击pageId对象内部的子元素(.first,.pre,.next,.last)时执行doJumpToPage函数
    	  $("#pageId")
    	  .on("click",".first,.pre,.next,.last",doJumpToPage)
      })
      function doJumpToPage(){
    	 //debugger
    	 //1.确定被点击的对象是谁 ?
    	 //基于$(this)获取被点击的对象
    	 //prop(属性名[,属性值])为html元素属性赋值或者获取属性的值
    	 var cls=$(this).prop("class");//first,pre,next,last
    	 //2.修改当前页码值
    	 //0)获取当前页码值
    	 var pageCurrent=$("#pageId").data("pageCurrent");
    	 var pageCount=$("#pageId").data("pageCount");
    	 //1)点击首页时当前页码值应该修改为1
    	 if(cls=="first"){
    		 pageCurrent=1;
    	 }
    	 //2)点击尾页时当前页码值应该为pageCount
    	 else if(cls=="last"){
    		 pageCurrent=pageCount;
    	 }
    	 //3)点击上一页时,假如当前页码值是大于1的则减一。
    	 else if(cls=="pre"&&pageCurrent>1){
    		 pageCurrent--;
    	 }
    	 //4)点击下一页时,假如当前页码值小于pageCount则加一。
    	 else if(cls=="next"&&pageCurrent<pageCount){
    		 pageCurrent++;
    	 }
    	 //5)已经是第一页还在点上一页或已经最后一页还在点下一页。
    	 else{
    		 return;
    	 }
    	 //3.基于新的页码值查询当前页数据并更新到页码上
    	 //3.1重新存储新的页码值
    	 $("#pageId").data("pageCurrent",pageCurrent);
    	 //3.2执行新的查询
    	 doGetObjects();
      }
      
  </script>
</div>

### 回答1: Spring Boot 是一个快速开发框架,可以轻松地实现增删改查操作。而 AJAX 是一种异步的 Web 技术,可以在不刷新页面的情况下向服务器发送请求和接收响应。结合 Spring Boot 和 AJAX,可以实现前后端分离的开发模式,提高开发效率和用户体验。 在 Spring Boot 中,可以使用 Spring Data JPA 来实现数据库操作,同时使用 Thymeleaf 模板引擎来渲染页面。而在前端,可以使用 jQuery 或者 Vue.js 等框架来实现 AJAX 请求和响应。 具体实现步骤如下: 1. 创建实体类和数据库表,使用 Spring Data JPA 来实现增删改查操作。 2. 创建控制器类,使用 @RestController 注解来标识该类为 RESTful API,同时使用 @RequestMapping 注解来指定请求路径和请求方法。 3. 在控制器类中定义增删改查的方法,使用 @GetMapping、@PostMapping、@PutMapping 和 @DeleteMapping 注解来指定请求方法和请求路径。 4. 在前端页面中使用 AJAX 发送请求,使用 jQuery 或者 Vue.js 等框架来实现 AJAX 请求和响应。 5. 在前端页面中使用 Thymeleaf 模板引擎来渲染页面,使用 th:each 指令来遍历数据列表,使用 th:if 指令来判断数据是否存在。 通过以上步骤,就可以实现 Spring Boot AJAX 增删改查操作。 ### 回答2: Spring Boot是一款非常流行的Java Web框架,其主打快速搭建和开发的特点。Ajax是一项实现页面局部刷新的技术,使得Web应用能够无刷新地交互。在Spring Boot中,我们可以使用Ajax实现增删改查的操作。下面详细介绍如何实现。 一、环境准备 首先,我们需要搭建Spring Boot的环境。具体操作可以参考Spring Boot官方文档。其中,需要使用到的依赖有Spring Web、Spring Data JPA和Thymeleaf等。 二、创建实体类和Repository 接下来,我们需要创建一个实体类,以便进行数据库的操作。同时,还需要创建一个Repository,用于实现具体的增删改查操作。以下是示例代码: //实体类 @Entity @Table(name = "user") public class User { @Id private Long id; private String name; private Integer age; private String gender; private String email; //省略setter和getter方法 } //Repository public interface UserRepository extends JpaRepository<User, Long> { } 三、页面设计与Ajax编写 接下来,我们需要设计一个页面,用于实现数据的展示和操作。其中,需要使用到Ajax技术,以实现页面的无刷新交互。具体代码如下: <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Spring Boot Ajax增删改查</title> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> </head> <body> <h1>Spring Boot Ajax增删改查</h1> <table> <thead> <tr> <th>ID</th> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>邮箱</th> <th>操作</th> </tr> </thead> <tbody id="userTable"> <tr th:each="user : ${users}"> <td th:text="${user.id}"></td> <td th:text="${user.name}"></td> <td th:text="${user.age}"></td> <td th:text="${user.gender}"></td> <td th:text="${user.email}"></td> <td> <a href="#" class="delete" th:data-id="${user.id}">删除</a> <a href="#" class="update" th:data-id="${user.id}" th:data-name="${user.name}" th:data-age="${user.age}" th:data-gender="${user.gender}" th:data-email="${user.email}">编辑</a> </td> </tr> </tbody> </table> <div> <form id="userForm"> <input type="hidden" id="id" name="id" /> <label>姓名:</label> <input type="text" id="name" name="name" /> <label>年龄:</label> <input type="text" id="age" name="age" /> <label>性别:</label> <select id="gender" name="gender"> <option value="男">男</option> <option value="女">女</option> </select> <label>邮箱:</label> <input type="text" id="email" name="email" /> <button type="submit" id="submit">保存</button> <button type="button" id="reset">重置</button> </form> </div> <script type="text/javascript"> $(document).ready(function() { //删除用户信息 $("body").on("click", ".delete", function() { if(confirm("确定要删除该用户吗?")) { var id = $(this).data("id"); $.ajax({ url: "/user/delete/" + id, type: "post", dataType: "json", success: function(result) { if(result.code == 200) { alert("用户删除成功!"); location.reload(); }else { alert("用户删除失败!"); } }, error: function() { alert("系统异常,请稍后重试!"); } }); } }); //编辑用户信息 $("body").on("click", ".update", function() { var id = $(this).data("id"); var name = $(this).data("name"); var age = $(this).data("age"); var gender = $(this).data("gender"); var email = $(this).data("email"); $("#id").val(id); $("#name").val(name); $("#age").val(age); $("#gender").val(gender); $("#email").val(email); }); //保存用户信息 $("#submit").click(function() { var url = $("#id").val() == "" ? "/user/save" : "/user/update"; $.ajax({ url: url, type: "post", data: $("#userForm").serialize(), dataType: "json", success: function(result) { if(result.code == 200) { alert("用户保存成功!"); location.reload(); }else { alert("用户保存失败!"); } }, error: function() { alert("系统异常,请稍后重试!"); } }); }); //重置用户信息 $("#reset").click(function() { $("#id").val(""); $("#name").val(""); $("#age").val(""); $("#gender").val(""); $("#email").val(""); }); }); </script> </body> </html> 四、编写Controller 最后,我们需要编写一个Controller,将页面与数据操作进行连接。以下是示例代码: @Controller @RequestMapping("/user") public class UserController { @Autowired private UserRepository userRepository; //查询所有用户信息 @GetMapping("/list") public String list(Model model) { List<User> users = userRepository.findAll(); model.addAttribute("users", users); return "user/list"; } //保存用户信息 @PostMapping("/save") @ResponseBody public JsonResult save(User user) { userRepository.save(user); return JsonResult.success(); } //更新用户信息 @PostMapping("/update") @ResponseBody public JsonResult update(User user) { userRepository.save(user); return JsonResult.success(); } //删除用户信息 @PostMapping("/delete/{id}") @ResponseBody public JsonResult delete(@PathVariable Long id) { userRepository.deleteById(id); return JsonResult.success(); } } 综上所述,以上就是Spring Boot Ajax增删改查的实现过程。通过使用Ajax技术,可以实现页面的无刷新交互。同时,也可以借助Thymeleaf来实现页面与Controller之间的数据交换。 ### 回答3: Spring Boot是一种用于构建企业级应用程序的框架,其基于Spring框架并使用各种Spring模块,使得构建Web应用程序更加简单和快速。同时,Ajax是一种常用技术,可以通过异步请求和更新局部页面数据实现客户端与服务器之间的实时交互。本文将介绍如何使用Spring Boot和Ajax实现增删改查功能。 首先,我们需要创建一个Spring Boot项目。可以使用Spring Initializr工具快速创建一个基础的项目骨架。这里我们使用MySQL作为数据库,所以需要配置相关依赖。 1. 添加依赖 在pom.xml文件中添加相关依赖,包括Spring Web、Spring Data JPA、MySQL Driver和Jackson DataBind. 2. 创建实体类 创建一个实体类,用于映射数据库表。注意要使用注解来指定实体类与数据库表的对应关系,以及字段与列的映射关系。 3. 创建数据访问层(DAO) 使用Spring Data JPA来访问数据库。创建一个接口,继承JpaRepository接口并指定泛型为实体类和主键类型。 4. 创建服务层(Service) 创建服务层接口,并实现对应的增删改查操作。可以使用分页查询功能,将查询结果分页显示。 5. 创建控制层(Controller) 创建控制层接口,调用服务层接口,实现数据的增删改查操作。使用@GetMapping、@PostMapping等注解来处理GET、POST请求。 6. 创建页面 创建一个HTML页面,使用Bootstrap、jQueryAjax等技术来实现客户端和服务器之间的实时交互。当用户在客户端上操作时,利用Ajax将数据发送到服务器,然后服务端可以对请求进行处理,返回相应结果。 创建一个HTML页面,添加Bootstrap库和jQuery库的链接。在页面上创建一个表格,包含要显示的数据。在页面上添加一个表单,允许用户添加、编辑和删除数据。可以使用Ajax来处理用户的请求。 在Ajax中,可以使用$.ajax()函数来实现请求。可以指定URL、请求方法、请求参数、请求头、数据类型等。在调用成功后,使用回调函数处理响应结果,包括更新UI,显示错误信息等。 以上就是使用Spring Boot和Ajax实现增删改查功能的流程。需要注意的是,本文只是一个基础示例,实际应用中还需要考虑安全性、性能优化、错误处理等方面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值