当前位置: 首页 > news >正文

Ajax和Json综合案例

在这里插入图片描述

1. 查询所有

在这里插入图片描述

创建brand.html,使用axios发送请求,其中查询一般采用get的请求方式

<script src="js/axios-0.18.0.js"></script><script>//1. 当页面加载完成后,发送ajax请求window.onload = function () {//2. 发送ajax请求axios({method:"get",url:"http://localhost:8080/brand-demo/selectAllServlet"}).then(function (resp) {})
</script>

创建selectAllServlet,写对应查询的servlet,调用service查询并把查询到的信息进行序列化(转为JSON数据),最后将字符串响应到对应的页面上(并且做中文字符处理),将原先的list集合(brand)转变为数组,所以要在html遍历数组

@WebServlet("/selectAllServlet")
public class SelectAllServlet extends HttpServlet {private BrandService brandService = new BrandService();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 调用Service查询List<Brand> brands = brandService.selectAll();//2. 将集合转换为JSON数据   序列化String jsonString = JSON.toJSONString(brands);//3. 响应数据response.setContentType("text/json;charset=utf-8");response.getWriter().write(jsonString);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

首先获取数据let brands = resp.data;得到数组,接着采用for循环遍历,随后完成拼字符串操作

<script src="js/axios-0.18.0.js"></script><script>//1. 当页面加载完成后,发送ajax请求window.onload = function () {//2. 发送ajax请求axios({method:"get",url:"http://localhost:8080/brand-demo/selectAllServlet"}).then(function (resp) {//获取数据let brands = resp.data;let tableData = " <tr>\n" +"        <th>序号</th>\n" +"        <th>品牌名称</th>\n" +"        <th>企业名称</th>\n" +"        <th>排序</th>\n" +"        <th>品牌介绍</th>\n" +"        <th>状态</th>\n" +"        <th>操作</th>\n" +"    </tr>";for (let i = 0; i < brands.length ; i++) {let brand = brands[i];tableData += "\n" +"    <tr align=\"center\">\n" +"        <td>"+(i+1)+"</td>\n" +"        <td>"+brand.brandName+"</td>\n" +"        <td>"+brand.companyName+"</td>\n" +"        <td>"+brand.ordered+"</td>\n" +"        <td>"+brand.description+"</td>\n" +"        <td>"+brand.status+"</td>\n" +"\n" +"        <td><a href=\"#\">修改</a> <a href=\"#\">删除</a></td>\n" +"    </tr>";}// 设置表格数据document.getElementById("brandTable").innerHTML = tableData;})}</script>

2. 新增数据

ajax提交数据,数据处理问题;Web层响应成功标识,客户端获取并判断是否成功添加,跳转至addBrand.html

在这里插入图片描述

增删改一般采用post请求,先写出基本框架

<script src="js/axios-0.18.0.js"></script><script>//1. 给按钮绑定单击事件document.getElementById("btn").onclick = function () {//2. 发送ajax请求axios({method:"post",url:"http://localhost:8080/brand-demo/addServlet",data:}).then(function (resp) {}})}</script>

创建AddServlet,接收数据request.getParameter() 不能接收json的数据,getParameter()的实现方式就是切割字符串,通过and或者=切割,而json数据并没有,格式不也一样,所以不能用;
采用获取请求体,再将请求体中的字符串(JSON字符串)转为Java对象;
最后设置响应成功标识

@WebServlet("/addServlet")
public class AddServlet extends HttpServlet {private BrandService brandService = new BrandService();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 接收数据,request.getParameter 不能接收json的数据/* String brandName = request.getParameter("brandName");System.out.println(brandName);*/// 获取请求体数据BufferedReader br = request.getReader();String params = br.readLine();// 将JSON字符串转为Java对象Brand brand = JSON.parseObject(params, Brand.class);//2. 调用service 添加brandService.add(brand);//3. 响应成功标识response.getWriter().write("success");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

最后返回html页面,在发送ajax请求之前,先处理数据

<script src="js/axios-0.18.0.js"></script><script>//1. 给按钮绑定单击事件document.getElementById("btn").onclick = function () {// 将表单数据转为jsonvar formData = {brandName:"",companyName:"",ordered:"",description:"",status:"",};// 获取表单数据let brandName = document.getElementById("brandName").value;// 设置数据formData.brandName = brandName;// 获取表单数据let companyName = document.getElementById("companyName").value;// 设置数据formData.companyName = companyName;// 获取表单数据let ordered = document.getElementById("ordered").value;// 设置数据formData.ordered = ordered;// 获取表单数据let description = document.getElementById("description").value;// 设置数据formData.description = description;let status = document.getElementsByName("status");for (let i = 0; i < status.length; i++) {if(status[i].checked){//formData.status = status[i].value ;}}console.log(formData);//2. 发送ajax请求axios({method:"post",url:"http://localhost:8080/brand-demo/addServlet",data:formData}).then(function (resp) {// 判断响应数据是否为 successif(resp.data == "success"){location.href = "http://localhost:8080/brand-demo/brand.html";}})}</script>
http://www.lryc.cn/news/63439.html

相关文章:

  • 【genius_platform软件平台开发】第九十四讲:int64_t的格式化问题(lld和PRId64)
  • 多模态之clip
  • Lombok常用注解
  • 加拿大各省接受公立教育的初始年龄汇总 — 供携子女赴加的访学、博后参考
  • 数字化工厂:虹科Vuzix AR眼镜在工业制造中的革新应用
  • 配置出接口方式的单服务器智能DNS
  • 数据结构初阶(栈和队列)
  • IDEA实用设置
  • 关联爆破-RSA分解
  • Netty内存管理--内存池PoolArena
  • RabbitMQ 发布订阅模式,routing路由模式,topic模式
  • 又一款可视化神器,开源了!
  • 干货 | 中科院心理所考研复试经验分享
  • Redis基础知识概述
  • 开心档之C++ 引用
  • 后台优化主要分为哪些?工作内容及流程是什么?
  • 二叉树及其遍历
  • java 版本企业电子招投标采购系统源码之登录页面
  • 第五章 使用RAID与LVM磁盘阵列技术
  • LeetCode 560. 和为 K 的子数组
  • 后端要一次性返回我10万条数据
  • 汽车智能化「出海」红利
  • Windows10资源管理器使用
  • 【视频教程解读】Window上安装和使用autogluon V0.7
  • 10、Java继承与多态 - 内部类的概念与分类 1
  • Java SE 面试题
  • Linux 之十九 编译工具链、.MAP 文件、.LST 文件
  • 小 C 的数学(math)
  • 应用运行环境实时洞察,亚马逊云科技Cisco AppDynamics展优势
  • C++程序设计——lambda表达式