Ajax技术使用

  • web 项目中前后端交互的方式,通常选择的方案是在浏览器端通过使用 Ajax 技术调用后端提供的 api 接口来完成异步请求和页面的交互更新,

Ajax简介

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),它是一种用于创建快速动态网页的技术,通过浏览器与服务器进行少量数据交换,Ajax 可以使网页实现异步更新,这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新,传统的网页如果需要更新内容,必须要进行跳转并重新加载整个网页。

Ajax 技术使得网站与用户间有了更友好的交互效果,比较常见的借助 Ajax 技术实现的功能有列表上拉加载分页数据、省市区三级联动、进度条更新等等,这些都是借助 Ajax 技术在当前页面即可完成的功能,即使有数据交互也不会跳转页面,整体交互效果有了很大的提升。

Ajax 工作流程

在这里插入图片描述
Ajax 的整个工作流程如上图所示,用户在进行页面上进行操作时会执行 js 方法,js 方法中通过 Ajax 异步与后端进行数据交互。首先会创建 XMLHttpRequest 对象,XMLHttpRequest 是 AJAX 的基础,之后会根据页面内容将参数封装到请求体中或者放到请求 URL 中,然后向后端服务器发送请求,请求成功后根据后端返回的数据进行解析和部分逻辑处理,最终在不刷新页面的情况下对页面进行局部更新。

使用Ajax需要注意的问题

数据格式问题

  • 向后端发送的数据要为json格式
contentType:'application/json; charset=utf-8',
  • 预计后端返回的是数据也是json格式
dataType: 'json', //预期服务器返回的数据类型

否则会报415异常

传输对象问题

  • 向后端发送json格式的对象
  • 需要先将前端获取的js对象转换为json格式
data:JSON.stringify(user),

示例

test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>testMC</title>
</head>
<body>

    <input id="name" name="name" placeholder="请输入姓名">
    <input id="password" name="password" placeholder="请输入密码">
    返回数据如下:
    <p id="returnMessage"></p>
    <!--点击提交按钮会到a方法-->
    <a href="#" onclick="aaa()">提交请求</a>

</body>

<!--使用webjars导入jquery-->
<script src="webjars/jquery/3.5.1/jquery.js"></script>

<script type="text/javascript">
    <!--$等价于JQuery-->
    function aaa() {
        //通过id选择器选择用户输入的数据,并转换为一个User对象
        var name=$('#name').val();
        var password=$('#password').val();

        var user={
            name:name,
            password:password,
        };

        $.ajax({
            //通过请求和后端进行绑定
            url: 'world',
            dataType: 'json',
            type:'POST',
            contentType:'application/json; charset=utf-8',
            //后端从data中取数据(id选择器),键值对形式,值是前端的数据
            data:JSON.stringify(user),
            //成功或者失败都需要一个回调函数
            success:function (result) {
            //请求成功:显示在页面上
                $('#returnMessage').html(JSON.stringify(result));
            },
            error:function () {
                alert("错误");
            }
        });
    }
</script>



</html>

controller

  • @RequestBody 将json数据转换为java对象
  • @ResponseBody 将java对象转换为json数据
@Controller
public class MyController {


    //接收前端传递对象数据
    @ResponseBody
    @PostMapping("/world")
    public User world(@RequestBody User user){
        System.out.println(user);
        return user;
    }

    @RequestMapping("/test")
    public String test2(){
        return "test";
    }
}

控制台结果
在这里插入图片描述
浏览器界面
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值