Ajax的post表单,不在url后接一大串参数键值对的方法

$('#loginForm').on('submit',function (ev) {
        //阻止表单参数附在url后面
        ev.stopPropagation();
        ev.preventDefault();

再在下面写上Ajax方法

即可阻止url后接一大串键值对参数

 

stopPropagation()方法

该方法将停止事件的传播,阻止它被分派到其他 Document 节点。在事件传播的任何阶段都可以调用它。注意,虽然该方法不能阻止同一个 Document 节点上的其他事件句柄被调用,但是它可以阻止把事件分派到其他节点

 

preventDefault() 方法

阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交)

 

以上,但这样做有一个问题,这样的话,表单的数据将不以formdata的形式传值,而是request payload

而request payload在servlet中是获取不到的

原因:post请求的Content-Type为application/x-www-form-urlencoded,参数是在请求体中,即上面请求中的Form Data。

   而请求的Content-Type为text/plain;charset=UTF-8,而请求表单参数在RequestPayload中

 

这样的话,有一个解决方案,即为修改请求的Content-Type

在Ajax中可以这样写:

//阻止附在url后面的话,参数不会再formdata中,而是request payload中,故改请求头的类型
            
            contentType:"application/x-www-form-urlencoded",

如此

即可在servlet中用request.getParameter()方法来获取参数值了

 

以上是花了蛮多时间,参考他人博客和网上资料得出的解决方法

参考链接如下:

不让url变化的参考:https://segmentfault.com/q/1010000007157022?_ea=1254896

request payload问题的解决参考:https://www.2cto.com/kf/201701/589783.html

Ajax方法参数的详解:https://www.cnblogs.com/tylerdonet/p/3520862.html

转载于:https://www.cnblogs.com/ihaokun/p/9795128.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值