使用 AJAX+JSON 实现用户查询/添加功能

文章详细阐述了如何使用AJAX与Servlet配合完成用户查询和添加功能。查询功能在页面加载完成后通过AJAX发送GET请求获取JSON数据,并在前端解析显示。添加功能则通过AJAX异步POSTJSON数据到Servlet,Servlet处理后将数据添加到数据库,成功后返回success,前端接收到响应后跳转至查询页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 查询功能

需求:在onload(页面加载完成)事件触发后,完成品牌列表查询;
在这里插入图片描述

  • 在brand.html页面【加载完成之后】,通过AJAX发送请求给Servlet;
  • Servlet将List数据转换为JSON写回response,返回浏览器;
  • 客户端收到响应,执行回调函数,在页面遍历数组并展示数据;

准备

引入fastjson,用于JSON的序列化和反序列化操作;
在这里插入图片描述

目录
在这里插入图片描述

selectAllServlet:

  • 注意数据中含有中文,在响应字节数据之前使用setContentType(),注意参数由 text/html变为 text/json
  • 调用JSON.toJSONString 将查询结果List 序列化 为JSON(本质是字符串);
  • 然后将序列化后的JSON字符串写入response传回;

(brandService是写的MyBastis那一套,并返回查询结果)

在这里插入图片描述

brand.html:

  • 首先发送请求是要在onload 页面加载完之后才发,所以整个逻辑在window.onload 绑定的的函数内;
  • 页面完成之后,准备发送AJAX请求给Servlet,SQL的请求方式为GET,DML为POST:
  • 设置回调函数resp.data 就是selectAllServlet返回的JSON数组;
  • 遍历数组,将数据放到 表格中:
    1.先创建一个字符串tablestr,放入表头;
    2.将JSON数组的属性放入tableData拼接出表格的格式:
    3.最后将tableData设置为表格的innerHTML属性数据;

在这里插入图片描述

<script
整个逻辑在onload事件绑定的函数内;
在这里插入图片描述
JSON可以像对象一样用 json . name 获取使用其属性;
在这里插入图片描述

效果

访问localhost:8080/brand-demo/brand.html ,直接显示查询的列表结果:
在这里插入图片描述

2. 添加功能

需求:客户端点击button后,服务端将浏览器输入参数添加到数据库(需要使用JSON的反序列化)

在这里插入图片描述

  • 浏览器点击button通过AJAX 将JSON数据提交到servlet;(注意这里不是submit!)
  • 服务端收到从requst获取的数据,添加到数据库,添加完后发出响应;
  • 浏览器获取响应,如果添加成功则跳转到brand.html(然后在进行查询列表操作);

addBrand.html:

注意
1. 请求是JSON格式,由AJAX发给Servlet,所以表单的action 不写Servlet访问路径;
2. 这里是 button 不是 submit !
submit是同步的请求, 而button没有提交表单的功能,数据提交由AJAX来实现,而且是异步请求;
传递的是JSON格式!
3.DML一般使用POST的方式请求;

表单:

在这里插入图片描述

<script:

  • 用户点击按钮触发button绑定的函数,客户端会将数据以JSON方式(封装到js对象)发送到servlet;
  • 服务端接收并反序列化数据为User对象,添加到数据库;
  • 客户端收到响应后,判断响应是否为suecess,是则表示添加成功,则页面跳转到brand.html(通过设置 location.href进行跳转) ;

注意

  1. 表单数据如何通过AJAX发送到servlet ? ------表单数据要转为JSON !
  2. 先建立一个fomatData的js对象,写入brand对象的格式;
  3. 通过id获取Element对象,以此从表单获取数据,

载入axios;
在这里插入图片描述
整个逻辑在onclick单击事件出绑定的函数中;

在这里插入图片描述
此处省略剩下的表单数据…
将用户输入的表单数据全都封装在js对象中;
特殊:status有两个值,单选框radio类型的cheked属性为true即为选中,然后把status赋值给js对象;

再将js对象 formatData作为Data传给servlet:
在这里插入图片描述

addServlet:

  • 在servlet获取HTTP请求报文的请求体,再调用JOSN.parseObject()反序列化为Java对象!
  • 将对象放入response传给客户端;

注意

  1. 由于AJAX使用了POST的方式请求,数据在请求体中,使用request.getReader() 读取;
  2. request.getParameter()的方式不能接收JSON格式的数据! 这个方法切割的是HTTP请求报文的字符串;而JSON 的格式不一样!
  3. JSON数据不管多长都是一行!

在这里插入图片描述
添加成功就响应 “success”;

效果
访问addBrand.html:
添加数据并提交,服务端会添加数据到数据库,然后返回success给客户端;
在这里插入图片描述
跳转到brand.html 并显示查询列表;
在这里插入图片描述

好的,下面是使用AJAX+JSON技术来实现新增用户功能的步骤: 1. 在前端页面中添加一个表单,用于输入用户信息,例如用户名、密码、邮箱等。 2. 在JavaScript中编写AJAX代码,通过POST请求将表单中的数据以JSON格式发送到后端的接口。 3. 在后端接口中解析JSON数据,将用户信息存储到数据库中。 4. 在后端接口返回一个JSON响应,表示新增用户成功或失败。 5. 在前端页面中根据后端返回的JSON响应,展示新增用户的结果。 下面是一个简单的示例代码: 前端页面: ```html <form id="user-form"> <input type="text" name="username" placeholder="用户名"> <input type="password" name="password" placeholder="密码"> <input type="email" name="email" placeholder="邮箱"> <button type="submit">提交</button> </form> <script> const form = document.getElementById('user-form'); form.addEventListener('submit', (event) => { event.preventDefault(); const data = new FormData(form); const xhr = new XMLHttpRequest(); xhr.open('POST', '/api/user'); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onload = () => { const response = JSON.parse(xhr.responseText); // 根据响应展示结果 }; xhr.send(JSON.stringify(Object.fromEntries(data))); }); </script> ``` 后端接口: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/api/user', methods=['POST']) def create_user(): data = request.get_json() # 解析JSON数据,存储到数据库中 # ... return jsonify({'success': True}) ``` 注意:以上代码仅为示例,实际应用中需要根据具体情况进行修改和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值