热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用AJAX动态加载列表数据并展示

AJAX技术允许网页在不重新加载整个页面的情况下进行异步更新,通过向服务器发送请求并接收JSON格式的数据,实现局部内容的动态刷新。

利用AJAX技术,可以通过异步请求从服务器获取数据,并将这些数据以JSON格式返回,然后在前端页面中动态地渲染这些数据,从而实现页面的部分更新,提高用户体验。


具体实现步骤如下:


前端部分


当用户点击某个链接或按钮时,触发AJAX请求,向指定URL发送POST请求,携带必要的参数(如页码、时间范围等),并在成功回调函数中处理返回的数据。


$(document).ready(function() {
$('a').click(function() {
$.ajax({
type: 'POST',
url: 'http://localhost:8080/Table_fenye/servlet/ListData',
data: {
page: $(this).text(),
starttime: $('#start').val(),
stoptime: $('#end').val(),
obj: $('#obj').val(),
opt: $('#opt').val(),
now: $('#now').val()
},
dataType: 'json',
success: function(data) {
$('#ct').empty(); // 清空表格内容
var html = '';
$.each(data, function(index, item) {
html += '' +
'' + item.msg + '' +
'' + item.time + '' +
'' + item.username + '' +
'' + item.app + '' +
'' + item.operation + '' +
'' + item.object + '' +
'' + item.result + '' +
'' + item.detail + '' +
'';
});
$('#ct').html(html);
}
});
});
});

后端部分


后端需要处理前端发送的请求,解析请求参数,执行数据库查询操作,将查询结果转换为JSON格式返回给前端。


public class ListData extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/json;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();

String page = request.getParameter("page");
String starttime = request.getParameter("starttime");
String stoptime = request.getParameter("stoptime");
String obj = request.getParameter("obj");
String opt = request.getParameter("opt");
String now = request.getParameter("now");

int pageSize = 20;
int pageNum = 0;

if (page.equals("上一页")) {
pageNum = Integer.valueOf(now) - 2;
} else if (page.equals("下一页")) {
pageNum = Integer.valueOf(now);
} else {
pageNum = Integer.valueOf(page) - 1;
}

DateFormat format = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
java.sql.Date startDate = null;
java.sql.Date endDate = null;

try {
startDate = new java.sql.Date(format.parse(starttime).getTime());
endDate = new java.sql.Date(format.parse(stoptime).getTime());
} catch (ParseException e) {
e.printStackTrace();
}

int from = pageNum * pageSize;
List list = new ArrayList<>();

Connection cOnn= JdbcUtil.getConn();
String query = "SELECT id, msg, time, username, app, operation, object, result, detail FROM startstopinfo "
+ "WHERE app = '" + obj + "' AND operation = '" + opt + "' AND time2 >= '" + startDate + "' AND time2 <= '" + endDate + "' "
+ "ORDER BY time2 LIMIT " + from + ", " + pageSize;

Statement stmt;
try {
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);

while (rs.next()) {
StartstopInfo info = new StartstopInfo();
info.setId(rs.getInt(1));
info.setMsg(rs.getString(2));
info.setTime(rs.getString(3));
info.setUsername(rs.getString(4));
info.setApp(rs.getString(5));
info.setOperation(rs.getString(6));
info.setObject(rs.getString(7));
info.setResult(rs.getString(8));
info.setDetail(rs.getString(9));
list.add(info);
}

rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}

Gson gson = new Gson();
String jsOnResult= gson.toJson(list);
out.print(jsonResult);
}
}

推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍如何使用 Python 将一个字符串按照指定的行和元素分隔符进行两次拆分,最终将字符串转换为矩阵形式。通过两种不同的方法实现这一功能:一种是使用循环与 split() 方法,另一种是利用列表推导式。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
author-avatar
llllllw_wlllllll
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有