vue3 使用 jquery ajax 和SpringBoot 后端进行数据交互

[关键代码] 

 $.ajax({
      url: "",
      type: "get/post",
      data: {arguments..},
      success(resp){},
});

url , type, data 是前端向后端发送请求的过程。url是访问的后端地址,data中的变量是方法的参数。 

传入参数后,后端会执行方法,返回结果是resp,格式是json格式,success(resp)表示成功返回。

 

【解决跨域问题】因为vue前后端分离,会出现跨域问题。

在后端中需要添加一个类解决跨域问题。

import org.springframework.context.annotation.Configuration;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Configuration
public class CorsConfig implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException, ServletException, IOException {
        HttpServletResponse response = (HttpServletResponse) res;
        HttpServletRequest request = (HttpServletRequest) req;

        String origin = request.getHeader("Origin");
        if(origin!=null) {
            response.setHeader("Access-Control-Allow-Origin", origin);
        }

        String headers = request.getHeader("Access-Control-Request-Headers");
        if(headers!=null) {
            response.setHeader("Access-Control-Allow-Headers", headers);
            response.setHeader("Access-Control-Expose-Headers", headers);
        }

        response.setHeader("Access-Control-Allow-Methods", "*");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Credentials", "true");

        chain.doFilter(request, response);
    }

    @Override
    public void init(FilterConfig filterConfig) {

    }

    @Override
    public void destroy() {
    }
}



【例】模拟用户注册的过程:

传入username,password,confirmedPassword。如果三个值都是"123",返回{"error_message","success"},否则返回{"error_message","error"}

@RestController
public class demo1 {
    @RequestMapping("/answer/")
  public Map<String,String>  ans(String username,String password ,String confirmedPassword){
     Map<String,String>map=new HashMap<>();
     if(username.equals("123")&&password.equals("123")&&confirmedPassword.equals("123")){
         map.put("error_message","success");
     }
     else{
         map.put("error_message","error");
     }
     return map;

  }
}

这里我server-port 配置的是3001,所以接口地址为:  localhost:3001/answer/

前端:

<template>
 
 <div>{{msg}}</div>
</template>
<script setup>
  import { ref } from 'vue'
  import $  from 'jquery'
 
 const msg = ref('')
  $.ajax({
      url: "http://127.0.0.1:3001/answer/",
      type: "get",
      data: {
          username: "123",
          password: "123",
          confirmedPassword: "123",
          },
                //resp是运行成功后的后台数据
          success(resp) {
                   if (resp.error_message === "success") {
                            msg.value = "123";        
                    } else {
                          msg.value = "456";
                    }
                },
            });
</script>


版权声明:本文为m0_52043808原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。