今天在处理一个搜索问题,挺简单的需求,就是输入框里面输入关键字,然后通过url把参数传递给后台,点击提交按钮的时候把获取到的关键词放到form的action,然后提交
//提交表单方法
function doSubmitDiqu(){
var keyword = $("#SearchWordId").val();
$("#searchForm").attr("action", "${pageContext.request.contextPath}/rmjgjh/search?keyword="+keyword);
$("#searchForm").submit();
}

然后发现后台获取到的参数是这样的,但是url是正常的

解决方案1
js文件中使用encodeURI()方法,
//提交表单
function doSubmitDiqu(){
var keyword = $("#SearchWordId").val();
var text = encodeURI(encodeURI(keyword));
$("#searchForm").attr("action", "${pageContext.request.contextPath}/rmjgjh/search?keyword="+text);
$("#searchForm").submit();
}
后台进行decode解码,这样确实接收到的参数不会乱码了

但是浏览器看到的也是一串加密串,不符合需求

解决方案2
在tomcat的server.xml文件中增加一句 URIEncoding=“UTF-8”



这样该问题完美解决,浏览器既可以明文传参,后台也可以获取到正确的参数
解决URL参数乱码问题
2万+

被折叠的 条评论
为什么被折叠?



