form提交表单到后台,'url?参数'的形式,后台接收不到值(为null),坑!

1.背景介绍

一个简单的dmeo,后台spring boot,前台html+js。需求:第一个页面点击标签触发onclick事件,js函数中发送请求到后台,后台接收参数查询数据跳转到第二个页面,并将结果带到第二个页面中。

2.遇到的问题

方法一.
第一想法是很简单,js中利用ajax传值,回调函数中跳转到第二个页面并将返回结果拼接在url的?后面,尴尬的是返回的是一个集合,一时间并不知道怎么将集合拼接到url后面带到第二个页面中去 (1.直接拼报错。2.利用encodeURIComponent()不报错,但没继续完成),因为前端是thymeleaf模板引擎,也不知道页面怎么接收。并且ajax只可以返回json字符串,并不可以直接在后台跳转页面。准备采取方法二.
方法一的代码:

     $.ajax({
            type: 'get',
            url: 'orders/selectOrdersByUserId',
            data: {userId: userId},
             success: function (data) {
             window.location.href="cart.html?orders="+encodeURIComponent(data.data);
             }
        })

方法二.
js中利用form表单发请求并且在url后面拼接参数,如下:

 var url="orders/selectOrdersByUserId?userId="+userId;
        var form=$("<form method=get action='"+url+"' > </from>");
        $("body").append(form);
        form.submit();
        form.remove();

这样后台不论怎么接收userId都是null,崩溃了好久,至少10根头发

3.解决办法

get换成post,完美解决

4.原因

页面通过表单(form)向服务器提交数据的时候有两种形式,一个是POST,另一个是GET。两种的一个区别是GET会直接把数据附加在url的后面,而POST发送的数据放置在http包中。form的action属性就是提交数据的url地址,method属性可以指定是GET或POST。
需要注意的是如果采用GET方式,那么action url中参数都会被丢弃,提交时候只会把form中的数据拼接在url向服务器提交;但是POST的方式则不会这样,它会按照action指定的url进行提交数据,包含url后面跟着的参数和参数值。

get和post区别请参看: https://blog.csdn.net/ls975214191/article/details/103371991
参考:
https://www.cnblogs.com/qxbj/p/4310278.html

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值