传带有多个参数的URl串,&的编码问题

在处理带有多个参数的URL时遇到&符号导致参数丢失的问题。通过前端使用escape方法对URL编码,而后端进行解码,成功解决了POST提交时URL参数被截断的难题。
摘要由CSDN通过智能技术生成

今天做菜单管理,菜单的url是菜单表单的一个字段,由于url较复杂,带有多个参数:/mgr/oms/catalog/catgroupMain.jsp?catalogId=10220&storeentIdSelected=10051&treeInitType=1

用post方式提交表单

var data = $('#frmEditModule').serializeArray();
    $.post(url, data, submitCallback);

保存完成后url字段没能保存&及其以后的字符串。(post提交的时候,参数会跟在当前URl后面做其参数进行拼接:

/save.action?url=/mgr/oms/catalog/catgroupMain.jsp?catalogId=10220&storeentIdSelected=10051&treeInitType=1

)从上面的显示可以看出,后台会吧&后面当成当前action的参数,所以保存的url只会丢失部分数据。

既然知道了原理,为了解决这个问题,我们就需要在前段对&符号进行编码,现有的编码有escape,encodeUri,encodeUriComponent;

以上三种我都试过了,只有escape会对&进行编码,对url字段进行编码后:

/mgr/oms/catalog/catgroupMain.jsp?%25catalogId%3d10220%26storeentIdSelected%3D10051%26treeInitType=1;

这个是我前台处理的全部代码:var menuUrl =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值