带“+”号的参数值通过url传递,后台取不到正确值

带“+”号的参数值通过url传递,后台取不到正确值 问题是这样的: --W9/baseTestPoint.jsp 旧源代码: javascript: var url = "

<!--ppUr-->

/quality/qualityStandard.do?method=getSelectedStandard_d&mtrl_no="+mtrl_no +"&quality_type="+quality_type+"&standard_item="+stardard_item; Tldown.func("Load",encodeURI(url)); quality_type的值为“类型” standard_item的值为“a+28+b+28”。 java后台取: String quality_type = base.utf8(request.getParameter("quality_type")); String standard_item = base.utf8(request.getParameter("standard_item")); standard_item得到“a 28 b 28” 后来我通过在javascript输出encodeURI(url),encodeURIComponent(url)的值: url: encodeURI(url): encodeURIComponent(url): 经过对照,决定只对带特殊值的参数做encodeURIComponent转换。同时,寻找后台解码的方法。最后,解决方案如下: javascript修改如下: var url = "

<!--ppUr-->

/quality/qualityStandard.do?method=getSelectedStandard_d&mtrl_no="+mtrl_no +"&quality_type="+quality_type+"&standard_item="+encodeURIComponent(stardard_item); Tldown.func("Load",encodeURI(url)); java: String standard_item = java.net.URLDecoder.decode(request.getParameter("standard_item"),"UTF-8"); String quality_type = base.utf8(request.getParameter("quality_type")); 总结: encodeURI对+号不编码,而encodeURIComponent会对“+”号做编码,但是,不能对整个url做encodeURIComponent,因为这样会连“//”,“/”都会被解析,就不再是一个正确的url。 另外,对encodeURIComponent后提交的数据,必须使用java.net.URLDecoder.decode解析。而被encodeURI后的数据,如汉字,可以直接通过转换编码类型获得正确内容。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值