springmvc项目的前后端分离使用ajax的坑

  1. 出现跨域问题,报错jquery-3.3.1.min.js:2 Failed to load localhost:8080/userLogin: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
    访问本地是不行的,可以参考网上 windows系统启动参数的设置,如果放在服务器上,也出现了这个问题,在spring的配置文件下加上如下内容
 <!--设置跨域请求-->
    <mvc:cors>
        <mvc:mapping path="/**/**"
                     allowed-origins="*"
                     allowed-methods="POST, GET, OPTIONS, DELETE, PUT"
                     allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
                     allow-credentials="true" />
    </mvc:cors>

2.ajax 报错,表示数据格式不对,这是在传form表单的时候出现的错误,具体的修改方法是在ajax里面添加另外的两个属性:

 processData:false,
 contentType:false,

3.服务器提示@RequestBody对象为空,异常Required request body is missing的解决办法

在controller的方法上写@RequestBody,如果传多个值,我就写了多个requestbody,像表单绑定一样,但是 其实他会只穿过来一个值,这个值用String接受,用&间隔开,如下:

uaccount=123&upwd=123

当然如果是写了一个值,而且还报上面的错误说明是把空值传过来了,这时候就需要改为@RequestBody(required = false)
4.还有一个问题是在@RequestMapping上加了method = POST ,但是ajax中的Type也是post但是,提示传的是get,不理解,将method去掉,而且Type依旧是post ,就成功了,可能是requestbody要求的就是post的传值的原因吧

附带一个ajax和controller


        function login() {
           $.ajax( {
               type: "POST",
               url: "http://xxxxxx/userLogin",
               contentType: "application/json; charset=utf-8",
               data: {
                   "a" :"123",
                   "b":"123",
               },
//               dataType: "json",//预期服务器 返回的数据类型
               dataType: 'json',
               success : function (data) {
                   alert( data.statuscode );
                   console.log(data)
               }
           });
        }
 @RequestMapping(value = "/userLogin" )
    @ResponseBody
    public String userLogin(@RequestBody(required = false) String a ) throws Exception {
       System.out.println( a );
        HashMap<String ,Integer> map = new HashMap<>();
        //添加状态码
        map.put( StatusUtils.STATUSCODE , StatusUtils.LOGIN_SUCCESS  );
        return JSON.toJSONString(map);

    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值