springboot|前端发ajax请求到后台Controller及常见的坑

本文介绍了前端使用Ajax发送请求到SpringBoot后端Controller的基本步骤,包括引入web依赖、添加jQuery、编写Ajax请求和Controller接收。强调了Ajax的异步特性可能导致的问题,以及contentType和dataType的设置对请求和响应的影响。同时提醒开发者注意与后端参数对应关系的重要性。

前端发ajax请求

这块是web的基础,发web请求大概需要以下几步1.引用web相关的依赖2.前端页面引入jquery.js3.编写ajax请求4.编写对应的Controller

引入web相关的依赖

前端的模板选用的是thymeleaf

implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'

引入jquery

jquery可以通过本地的方式引入,也可以通过cdn的方式引入本地引入:先下载jquery.js到static/js目录html页面head中添加:

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/static/js/jquery-3.4.1.min.js"></script>
</head>

如果是CDN话,则不用下载jquery , 直接在head中引入

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
</head>

编写ajax请求

参考文档
:https://api.jquery.com/jQuery.ajax/这里只展示一些常用的参数

$.ajax({
        url:'/test/testAjax1',
        type:'get',
        async:false,
        contentType:'application/json',
        dataType:'json',
        success:function (data) {
            console.log(data)
        }
    })

url:请求后台的urltype:标明是get还是post请求async:是异步的还是同步的,这里有个坑,有时候下拉框用ajax去请求数据,这里默认是异步的,结果数据还没回来,下拉框就开始渲染,然后发现下拉没有数据contentType: 前端的参数格式dataType:接口返回的数据的格式,一般来说,经常不写,让系统自己去判定这里ContentType的值一般来说有两种取值, 默认是
application/x-www-form-urlencoded; charset=UTF-8在实际开发中,经常会改成如上的application/json这里改了之后,Controller中也要对应着该入参方式,详情可参考这篇DEMO:springboot|Controller接收处理GET,POST请求入参
https://www.javastudy.cloud/articles/2019/11/03/1572752115551.html

Controller接收请求

/**
 * @Author https://www.javastudy.cloud
 * @CreateTime 2019/11/8
 **/
@RestController
public class TestController {
    @RequestMapping("test/testAjax1")
    public Map testAjax1(){
        Map<String,String> map = new HashMap<>();
        map.put("aaa","bbb");
        return map;
    }
    
}

结果输出

springboot|前端发ajax请求到后台Controller及常见的坑

 

DEMO总评

ajax请求是web开发中的第一步,我们可以按Http请求来理解它, 有相应的header,有相关的各种type , 其中最麻烦的是要和后端Controller的参数对应关系,稍不留神对应错了后端就收不了参数,或者值没法返回,要多看文档,注意默认值.

需要获取更多资料私聊小宁,回复:资料获取

springboot|前端发ajax请求到后台Controller及常见的坑

在Spring Boot中Ajax请求,你可以按照以下步骤进行操作: 1. 首先,在前端页面中引入jQuery库,你可以使用如下方式引入:。 2. 接着,编Ajax请求JavaScript代码。你可以使用jQuery的`$.ajax()`方法或`$.post()`方法来请求。以下是一个示例代码: ```javascript $.ajax({ url: "your-url", // 替换为你的请求地址 type: "POST", // 请求方法,可以是GET、POST等 data: { // 请求参数,如果有的话 key1: value1, key2: value2 }, success: function(response) { // 请求成功后的处理逻辑 console.log(response); }, error: function(xhr, status, error) { // 请求失败后的处理逻辑 console.log(error); } }); ``` 或者使用`$.post()`方法: ```javascript $.post("your-url", { key1: value1, key2: value2 }) .done(function(response) { // 请求成功后的处理逻辑 console.log(response); }) .fail(function(xhr, status, error) { // 请求失败后的处理逻辑 console.log(error); }); ``` 3. 在Spring Boot后端,编对应的Controller来处理Ajax请求。你可以使用`@RestController`注解来标识一个Controller类,并使用`@RequestMapping`注解指定请求的URL路径。以下是一个示例代码: ```java @RestController public class AjaxController { @RequestMapping(value = "/your-url", method = RequestMethod.POST) public String handleAjaxRequest(@RequestParam("key1") String value1, @RequestParam("key2") String value2) { // 处理Ajax请求的业务逻辑 // 返回响应结果 return "Response"; } } ``` 4. 最后,你可以根据具体的业务需求进行处理Ajax请求的逻辑。在Controller中,你可以根据请求参数进行相应的处理,并返回响应结果。 请注意,为了解决Ajax送跨域请求的问题,你可能还需要在后台添加相应的配置。根据引用提供的信息,你可以在前端Ajax请求中添加如下代码:`xhrFields: {withCredentials: true}`。此外,在后台服务器中,你还需要设置相关的跨域配置。 希望以上信息对你有帮助!如有更多问题,请随时提问。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值