javaweb--Ajax

Ajax

Asynchronous JavaScript And XML:异步的JavaScript和XML
Ajax不是一种新的编程,指的是一种交互方式,异步加载,客户端和服务端的数据交互是更新在局部页面的技术,不需要刷新整个页面(局部刷新)

优点:

  • 局部刷新,效率更高
  • 用户体验更好

基于JQuery的Ajax

<%--
  Created by IntelliJ IDEA.
  User: bijing
  Date: 2022/9/23
  Time: 21:25
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Ajax</title>
    <script type="text/javascript" src="js/jquery-3.5.1.min.js"></script>
    <script type="text/javascript">
        $(function () {
            var btn = $("#btn");
            btn.click(function () {
                $.ajax({
                    url: '/showAjax',//相当于action中的地址
                    type: 'post',//请求方式
                    data: 'id=1',//相等于传参?id=1,不需要就不写
                    dataType: 'text',//服务器返回的类型
                    success: function (data) {
                        var text = $("#text");
                        text.before("<span>" + data + "</span><br>")
                    }
                });
            });
        })
    </script>
</head>
<body>
<%--不能再使用表单提交了--%>
<input id="text" type="text">
<br>
<input type="submit" id="btn" value="提交">
</body>
</html>

不能使用表单提交请求,改用jquery方式动态绑定事件来提交
servlet中不能再跳转到jsp,只能将数据返回

@WebServlet("/showAjax")
public class ShowAjax extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String id = req.getParameter("id");
        System.out.println(id);
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        String str = "hello world";
        resp.getWriter().write(str);
    }
}

传统的web数据交互vs Ajax数据交互

1、客户端请求方式不同
传统:浏览器发送同步请求
Ajax:异步引擎对象发送异步请求
2、服务器响应方式不同
传统:响应一个完整jsp页面
Ajax:响应相应的数据
3、客户端处理不同
传统:需要等待服务器完成响应并且重新加载整个页面后,用户才能进行后续操作
Ajax:动态更新页面的局部内容,不影响用户的其他操作

Ajax原理

在这里插入图片描述

基于jQuery的Ajax语法

$.ajax({属性})
常用的属性:
url:请求后端服务器的地址
type:请求类型,默认get
data:请求的参数,传给后台
dataType:服务器返回的数据类型,text/json
success:请求成功的回调函数
error:请求失败的回调函数
complete:请求完成嗯回调函数(无论成功或者失败都会调用)

实现省市区三级联动的关键是建立好数据库,并且编写好对应的 SQL 语句。以下是一个简单的数据库设计: - 省份表 province,包括字段 id 和 name。 - 城市表 city,包括字段 id、name 和省份的外键 province_id。 - 区县表 district,包括字段 id、name 和城市的外键 city_id。 接下来是建表语句: ```sql -- 省份表 CREATE TABLE `province` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 城市表 CREATE TABLE `city` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `province_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `province_id` (`province_id`), CONSTRAINT `city_ibfk_1` FOREIGN KEY (`province_id`) REFERENCES `province` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 区县表 CREATE TABLE `district` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `city_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `city_id` (`city_id`), CONSTRAINT `district_ibfk_1` FOREIGN KEY (`city_id`) REFERENCES `city` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` 接下来是查询省份、城市、区县的 SQL 语句: ```sql -- 查询所有省份 SELECT id, name FROM province; -- 查询某个省份下的所有城市 SELECT id, name FROM city WHERE province_id = ?; -- 查询某个城市下的所有区县 SELECT id, name FROM district WHERE city_id = ?; ``` 在 Java Web 项目中,可以使用 Ajax 和 JSON 技术实现省市区三级联动。前端页面发送 Ajax 请求,后端通过 JDBC 连接数据库,查询对应的省份、城市、区县信息,并以 JSON 格式返回给前端页面。前端页面再解析 JSON 数据,更新页面的省份、城市、区县下拉框选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值